SQL GROUP BY含NULL值:MSSQL 2012R2能否仅用SQL实现指定聚合?
在MSSQL 2012 R2中按id合并数据并聚合金额的实现方法
问题描述
我在MSSQL 2012 R2的表中有以下数据:
id data1 amount ------------------ 10 abc 95.00 10 NULL 312.00 20 def 16.00 30 gqi 32.00
期望得到的查询结果是按id合并记录,对amount求和,同时保留对应id下非NULL的data1值:
id data1 amount ------------------ 10 abc 407.00 20 def 16.00 30 gqi 32.00
请问仅使用SQL是否可以实现该需求?
解决方案
当然可以实现!这是典型的分组聚合场景,我们可以通过GROUP BY结合聚合函数轻松完成需求,具体SQL语句如下:
SELECT id, MAX(data1) AS data1, SUM(amount) AS amount FROM 你的表名 -- 替换成实际表名 GROUP BY id;
逻辑说明
GROUP BY id:将数据按id分组,确保同一个id的所有记录被合并处理。MAX(data1):因为同一个id下只有一条记录的data1是非空值,MAX函数会自动忽略NULL,从而精准获取到该id对应的有效data1内容。SUM(amount):对同一id下的所有amount值求和,得到合并后的总金额。
执行这条语句后,就能完全匹配你期望的结果啦。
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

