如何在properties表中按条件合并行并叠加apartments字段数值
实现方案
你可以用条件分组+UNION ALL的方式实现需求,以下是兼容绝大多数关系型数据库的通用SQL写法:
SELECT compositeKey, SUM(apartments) AS apartments, `group`, name FROM properties WHERE `group` = '----' GROUP BY compositeKey, `group`, name UNION ALL SELECT compositeKey, apartments, `group`, name FROM properties WHERE `group` != '----' ORDER BY compositeKey;
逻辑说明
- 上半段查询负责处理
group为----的记录:按compositeKey、group、name三个字段分组,分组后对apartments字段求和,其余分组字段本身就是一致值,直接保留即可 - 下半段查询负责处理
group不为----的记录:不需要合并,直接输出所有原始记录即可 - 两段结果用
UNION ALL拼接,最终输出和你给出的期望结果完全匹配
注意:
group是SQL语法关键字,作为字段名使用时需要加反引号/方括号转义,不同数据库的转义符号略有差异,上述写法为MySQL标准,SQL Server可替换为[group],PostgreSQL可替换为"group"。
内容的提问来源于stack exchange,提问作者BitByte
相关产品推荐
相关产品推荐

