SUM(IF(COND,EXPR,NULL))和IF(COND,SUM(EXPR),NULL)

时间:2017-03-03 13:25:55

标签: mysql sql database group-by

我正在通过解析类似Excel的公式来生成sql请求。

因此,对于给定的公式,我收到了此请求:

SELECT IF(COL1='Y', SUM(EXPR),NULL)
FROM Table

我没有得到我想要的结果。如果我像这样手动重写请求它可以工作:

SELECT SUM(IF(COL1='Y', EXPR, NULL))
FROM Table

此外,如果我为COL1='Y'行添加GROUP BY语句,第一个请求会产生正确的值:

SELECT IF(COL1='Y', SUM(EXPR),NULL)
FROM Table
GROUP BY COL1

有没有办法保留第一个语法IF(COND, SUM(EXPR), NULL)并略微编辑它以使其在没有GROUP BY语句的情况下工作?

1 个答案:

答案 0 :(得分:0)

您必须使用GROUP BY,因为您使用的是SUM - 否则SQL引擎无法告诉您如何汇总列。

或者,您只能汇总此列:

SELECT SUM(EXPR)
FROM Table
WHERE COL1='Y'

但是,您必须为每个此类列运行单独的查询,请阅读:出于性能原因不建议使用。