我有一个表,将数据分组在一起。我遇到了一个问题,我想从Column2中获得一个数字的总和,其中Column3具有特定值而没有显示Column3
表X:
Col1 Col2 Col3 Col4
A 4 tt 6y
B 5 tt 6y
C 4 ee 7y
A 3 ee 7u
A 4 ee 6y
B 5 tt 8u
C 4 tt 7y
A 3 xx 8u
“我的选择”分组是
select Col1, Sum(Col2), Col4
from table x
group by Col1, Col4
我需要在组中添加2个新列,其中Col3为tt的列Col2的总和,而Col3为ee的列2的总和。我不需要显示Col3的值,也不想按Col3分组。
我查看了一个分区,但是我不知道如何将分区指定为列的值。
答案 0 :(得分:3)
您需要条件聚合:
Select
Col1, Col4,
Sum(Col2) sumcol2,
Sum(case when col3 = 'tt' then Col2 else 0 end) sumtt,
Sum(case when col3 = 'ee' then Col2 else 0 end) sumee
from table x
group by Col1,Col4
答案 1 :(得分:0)
分组时,以与WHERE条件类似的方式使用HAVING。 像这样:
SELECT Col1,Sum(Col2),Col4
FROM table x
GROUP BY Col1,Col4
HAVING COl3 LIKE 'ee'
由于我不是坐在我的SQL机器上,所以无法对其进行测试-请自行进行测试。