我正在通过解析类似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有没有办法在不使用GROUP BY语句的情况下保留第一个语法IF(COND, SUM(EXPR), NULL)并对其进行稍微编辑以使其工作?
发布于 2017-03-03 22:12:57
您必须使用GROUP BY,因为您使用的是SUM -否则SQL引擎无法告诉您希望如何汇总该列。
或者,您可以仅对此列进行总结:
SELECT SUM(EXPR)
FROM Table
WHERE COL1='Y'但是,您必须为每个这样的列运行单独的查询,即:出于性能原因,不推荐。
https://stackoverflow.com/questions/42580116
复制相似问题