0
Excelのような式を解析してsqlリクエストを生成しています。SUM(IF(COND、EXPR、NULL))とIF(COND、SUM(EXPR)、NULL)
だから与えられた式のために、私はこの要求を取得する:
SELECT IF(COL1='Y', SUM(EXPR),NULL)
FROM Table
私は私が望む結果を得ることはありません。私は手動で次のようにリクエストを書き換える場合、それは動作します:私はGROUP BYステートメントを追加した場合
はSELECT SUM(IF(COL1='Y', EXPR, NULL))
FROM Table
また、最初の要求がCOL1='Y'
行のために、正しい値を生成します。
SELECT IF(COL1='Y', SUM(EXPR),NULL)
FROM Table
GROUP BY COL1
方法はあります最初の構文をIF(COND, SUM(EXPR), NULL)
のままにして、それをわずかに編集してGROUP BY
の文がなくても動作するようにしますか?
私はあなたが2番目のクエリで正しいロジックを見つけたと思います。これは正しい構文です(ただし 'if()'の代わりに 'case'を使用します)。 –
@ GordonLinoff、そうですが、私はANTLR文法に触れてはいけないと思っています:(なぜGROUP BYを追加するとうまくいくのですか? – Amessihel