2013-05-13 35 views
0

我有一个表与3个领域(与问题相关)。一个字段是数字,另外两个字段是基于文本的内容。我想要得到的数字字段的总和如下:通过现场mysql总结与个别行上的条件

  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 

我怎么能在一个查询中做到这一点?

+0

使用'CASE'如果电场是'Y'再乘''通过FieldB' -1'。 – Kermit 2013-05-13 18:40:03

回答

1

像这样的东西应该工作:

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

谢谢!正是我在找什么! – Elie 2013-05-13 18:43:45