【问题标题】:Sum of columnA where another columnB is specific value without showing columnB另一列是特定值而不显示列的列的总和
【发布时间】:2019-07-09 04:05:22
【问题描述】:

我有一个表格,我从中将数据分组在一起。我遇到了一个问题,我想要 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 个新列,列 Col2 的总和,其中 Col3 是 tt,另一个是 Col2 的总和,其中 Col3 是 ee。我不需要显示 Col3 的值,也不想按 Col3 分组。

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

【问题讨论】:

  • 帮助我们帮助您 - 此示例数据的预期结果是什么?

标签: sql sql-server


【解决方案1】:

你需要条件聚合:

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

【讨论】:

    【解决方案2】:

    在分组时以与 WHERE 条件类似的方式使用 HAVING。 类似的东西:

    SELECT Col1,Sum(Col2),Col4
    FROM table x
    GROUP BY Col1,Col4
    HAVING COl3 LIKE 'ee'
    

    因为我没有坐在我的 SQL 机器前,所以我无法测试它 - 自己测试一下。

    【讨论】:

      猜你喜欢
      • 2017-01-08
      • 2019-03-30
      • 1970-01-01
      • 2021-09-04
      • 2021-08-21
      • 1970-01-01
      • 2018-03-15
      • 2017-11-04
      • 1970-01-01
      相关资源
      最近更新 更多