SQL聚合查询和求和列
我有这张桌子(我把名字放在需要的柱子上) 我想得到这个:SQL聚合查询和求和列,sql,sum,aggregate,Sql,Sum,Aggregate,我有这张桌子(我把名字放在需要的柱子上) 我想得到这个: id idc Totidv1 Totidv3 TOT 47 3 300 60 360 47 4 280 0 280 43 2 0 510 510 53 4 480 0 480 29 2 0 510 510 2 2 480 0 480 我能得到的最接近的结果是: SELECT DISTINCT(
id idc Totidv1 Totidv3 TOT
47 3 300 60 360
47 4 280 0 280
43 2 0 510 510
53 4 480 0 480
29 2 0 510 510
2 2 480 0 480
我能得到的最接近的结果是:
SELECT DISTINCT(iddip),IDCENTROCOSTO,tot=SUM(VALORE),ord=( SELECT SUM(isnull(VALORE,0)) FROM VALORIVOCICDC WHERE IDVOCE='1' and iddip=v.IDDIP and IDCENTROCOSTO ='3' GROUP BY iddip,IDCENTROCOSTO),
str=( SELECT SUM(isnull(VALORE,0)) FROM VALORIVOCICDC WHERE IDVOCE='3' and iddip=v.IDDIP and IDCENTROCOSTO ='3' GROUP BY iddip,IDCENTROCOSTO)
FROM VALORIVOCICDC v
GROUP BY v.iddip,IDCENTROCOSTO
但它在totidv1和totisv3中返回了错误的总和,我该怎么做呢?感谢您提供的任何提示您只需要在此处列出一个组(不明确)和几个案例说明:
SELECT
id,
idc,
SUM(CASE WHEN idv=3 THEN idv ELSE 0 END) as totidv1,
SUM(CASE WHEN idv=1 THEN idv ELSE 0 END) as totidv3,
SUM(idv) as Tot
FROM yourtable
GROUP BY id, idc
请注意,
Distinct
不是一个可以像selectdistinct(somecolumn)
那样调用的函数,这在功能上等同于selectdistinct somecolumn…
,因为它对SELECT语句返回的整个记录集都有效。您是我的英雄,我在这件事上浪费了一天的时间,解决方案是如此简单和优雅。。。谢谢您!我会尽力把你的答案记为正确答案
SELECT
id,
idc,
SUM(CASE WHEN idv=3 THEN idv ELSE 0 END) as totidv1,
SUM(CASE WHEN idv=1 THEN idv ELSE 0 END) as totidv3,
SUM(idv) as Tot
FROM yourtable
GROUP BY id, idc