2017-05-19 1 views
0

Je suis en train de calculer la différence entre les deux colonnes, mais parfois l'une des colonnes a une valeur NULL et SQL ignore que.calculs avec la valeur NULL

Actuellement j'utilise ceci: if ("indicateur de source" = "Total OPEX", ("Montant Eur" - "Cible EUR") * -1, "Montant Eur" - "Cible EUR") "Diff."

est-il une autre façon de calculer ce (s'il vous plaît noter que la valeur OPEX) et d'obtenir les résultats escomptés?

Merci

+0

Quel moteur db utilisez-vous? –

+0

'if' est non standard ... – JohnHC

Répondre

4

Vous pouvez utiliser case et coalesce():

(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) 

L'avantage de case est qu'il est standard ANSI SQL, pris en charge par à peu près toutes les bases de données. if() dépend de la base de données.

+0

Cela a fonctionné très bien. Merci Gordon. – Kastriot