我正在尝试计算两列之间的差异,但有时其中一列有NULL值而SQL却忽略了这一点。
现在我正在使用这个: if(“来源指标”='总OPEX',(“Eur Amount” - “EUR Target”)* -1,“Eur Amount” - “EUR Target”)为“Diff。”
有没有其他方法来计算(请注意OPEX值)并获得预期结果?
由于
答案 0 :(得分:4)
您可以使用case
和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)
case
的优点是它是ANSI标准的SQL,几乎所有数据库都支持它。 if()
与数据库有关。