2017-05-19 18 views
0

2つの列の差を計算しようとしていますが、列の1つにNULL値があり、SQLが無視していることがあります。NULL値を使用した計算

現在、私はこれを使用しています: if( "ソースインジケータ" = '合計OPEX'、( "Eur Amount" - "EUR Target")* -1、 "Eur Amount" - "EUR Target")as "Diff。"

これを計算する方法はありますか(OPEX値に注意してください)、期待される結果が得られますか?

おかげ

+0

どちらのエンジンを使用していますか? –

+0

'if'が非標準です... – JohnHC

答えて

4

あなたはcasecoalesce()を使用することができます。

(case when "source indicator" = 'Total OPEX' 
     then coalesce("Eur Amount", 0) - coalesce("EUR Target", 0) * -1 
     else coalesce("Eur Amount", 0) - coalesce("EUR Target", 0) 
end) 

caseの利点は、それはほとんどすべてのデータベースでサポートされているANSI標準のSQL、ということです。 if()はデータベースに依存します。

+0

これは素晴らしい動作しました。ありがとうゴードン。 – Kastriot

関連する問題