mysql求和与各行的条件

时间:2013-05-13 18:38:17

标签: mysql

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

  1. 按字段A分组
  2. 如果字段B等于X,则添加
  3. 如果字段B等于Y,则减去

    ABC,X,25
    ABC,X,15
    ABC,Y,10
    DEF,X,20
    DEF,Y,5

  4. 以上数据将返回:

    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
    

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

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

SELECT
  FieldA,
  SUM(CASE WHEN FieldB = 'X' THEN FieldC ELSE -FieldC END) AS Result
FROM my_table
GROUP BY FieldA