columnA的总和,其中另一个columnB是特定值,但未显示columnB

时间:2019-07-08 19:33:40

标签: sql sql-server

我有一个表,将数据分组在一起。我遇到了一个问题,我想从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分组。

我查看了一个分区,但是我不知道如何将分区指定为列的值。

2 个答案:

答案 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机器上,所以无法对其进行测试-请自行进行测试。