选择多个列作为键的某些行的总和

时间:2019-06-14 03:19:50

标签: sql sql-server

我在选择某些行之和的列时​​遇到问题。

让我们说我们有数据:

date        key value
--------------------------
2019-04-14  A       1    
2019-04-14  B       2    
2019-04-14  C       3    
2019-04-14  D       4    
2019-04-14  E       5    

我想用特定的键将行分为两部分,然后将各组的值相加。

假设创建组X[A, C, D]的总和组成,而组Y[B, E]的总和组成。

所以最终我们希望有两列,例如:

X   Y
-----
8   7

我的查询无效:

SELECT SUM(a.value) as X, SUM(b.value) as Y
FROM table a, table b
WHERE a.date='2019-04-14' AND b.date=a.date AND a.code IN ('A', 'C', 'D') AND b.code IN ('B', 'E)

1 个答案:

答案 0 :(得分:3)

假设这是查询中的自联接(即将同一张表重新联接到自身上),那么我认为您想要的是:

SELECT SUM(case when A.code IN ('A', 'C', 'D') then A.value else 0 end) as X
  , SUM(case when A.code IN ('B', 'E') then A.value else 0 end) as Y
FROM table A

您不需要任何联接/复杂的SQL,只需一个条件求和。