我有一个包含3个字段的表(与问题相关)。一个字段是数字,另外两个字段是基于文本的内容。我想得到数字字段的总和如下:
如果字段B等于Y,则减去
ABC,X,25
ABC,X,15
ABC,Y,10
DEF,X,20
DEF,Y,5
以上数据将返回:
ABC, 30
DEF, 15
理想情况下,我的查询会生成以下内容的等效内容:
SELECT fieldA, SUM(fieldC) AS sum1 FROM my_table WHERE fieldB = 'X' GROUP BY fieldA
SELECT fieldA, SUM(fieldC) AS sum2 FROM my_table WHERE fieldB = 'Y' GROUP BY fieldA
RESULT = sum1 - sum2
如何在单个查询中执行此操作?
答案 0 :(得分:1)
这样的事情应该有效:
SELECT
FieldA,
SUM(CASE WHEN FieldB = 'X' THEN FieldC ELSE -FieldC END) AS Result
FROM my_table
GROUP BY FieldA