0

我有一个包含 3 个字段的表格(与问题相关)。一个字段是数字,另外两个具有基于文本的内容。我想得到数字字段的总和,如下所示:

  1. 按字段 A 分组
  2. 如果字段 B 等于 X,则添加
  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

如何在单个查询中执行此操作?

4

1 回答 1

1

像这样的东西应该工作:

SELECT
  FieldA,
  SUM(CASE WHEN FieldB = 'X' THEN FieldC ELSE -FieldC END) AS Result
FROM my_table
GROUP BY FieldA
于 2013-05-13T18:42:48.987 回答