我在选择某些行之和的列时遇到问题。
让我们说我们有数据:
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)
答案 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,只需一个条件求和。