我正在通过解析类似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
语句的情况下工作?
答案 0 :(得分:0)
您必须使用GROUP BY,因为您使用的是SUM - 否则SQL引擎无法告诉您如何汇总列。
或者,您只能汇总此列:
SELECT SUM(EXPR)
FROM Table
WHERE COL1='Y'
但是,您必须为每个此类列运行单独的查询,请阅读:出于性能原因不建议使用。