如果某些条件为真,则进行求和

时间:2010-06-11 15:55:59

标签: mysql

我正在尝试构建一个查询,如果某个参数是一个总和 组。例如:

SELECT SUM(IF(<condition>,field,field)) AS total_value

......这是正常的。

但我在IF()中有多个条件,例如:

SELECT SUM(IF(<condition> <condition>,field,field)) AS total_value

..这不起作用,你能不知道对于这个应该是什么样的正确查询。

更新

抱歉错误的查询,正确的查询

我当前的查询看起来像这样: SELECT SUM(IF(condition1,field,field))AS total_value 这是正常的。

但我在IF()中有多个条件,比如 SELECT SUM(IF(condition1 condition2,field,field))AS total_value 哪个不起作用,你能不知道对于这个应该是什么样的正确查询。

4 个答案:

答案 0 :(得分:9)

查看案例陈述:

Select Sum( Case When column = test Then column2 Else column3 End )
...

如果您有多个条件,您仍然可以使用案例:

Select Sum( Case 
            When column1 = 'Foo' Then column2 
            When column1 = 'Bar' Then column3
            When column1 = 'Gamma' Then column2 + column3
            Else column3 End )
From ...

在这种情况下,如果column1不为null且不等于'Foo',那么它将转到下一个When语句。如果该测试不成立,则进入下一个等等。

答案 1 :(得分:2)

select sum(case when a = b and x = y then field1 + field2 else 0 end)

<强>更新

也许你的意思是:

select sum(case when a = b then field1 else field2 end)

答案 2 :(得分:1)

SELECT SUM(IF(field = value1 OR field = value2 OR field = value3,1,NULL)) AS total_value

答案 3 :(得分:0)

SELECT SUM(IF(<condition1>, 
              IF(<condition2>,
                 <field1>,
                 <field2>),
              <field2>)) AS total_value