0
我正在通過解析Excel類公式生成SQL請求。SUM(IF(COND,EXPR,NULL))和IF(COND,SUM(EXPR),NULL)
因此,對於一個給定的公式,我得到這個請求:
SELECT IF(COL1='Y', SUM(EXPR),NULL)
FROM Table
我沒有得到我想要的結果。如果我手動改寫這樣的請求,它的工作原理:
SELECT SUM(IF(COL1='Y', EXPR, NULL))
FROM Table
此外,第一要求產生正確的價值,如果我添加GROUP BY語句,爲COL1='Y'
行:
SELECT IF(COL1='Y', SUM(EXPR),NULL)
FROM Table
GROUP BY COL1
是否有辦法保留第一個語法IF(COND, SUM(EXPR), NULL)
並稍微編輯它使其在沒有GROUP BY
語句的情況下工作?
我想你已經找出了第二個查詢的正確邏輯。 *是*正確的語法(儘管我會使用'case'而不是'if()')。 –
@GordonLinoff,是的,但是我希望我不要觸及產生該行的ANTLR語法:(那麼爲什麼它在我添加一個GROUP BY時起作用? – Amessihel