IBM DB2:SQL 减法在分母中不起作用

IBM DB2: SQL subtraction doesn't work in denominator

我正在处理制造成本和制造的价值(“正在进行的网络”)。 SQL 是直接算术,但如果分母中有减号(减法),则查询不会产生值。数据库列:

A = Material issued cost
B = Miscellaneous cost adds 
C = Labor
D = Overhead
E = Setup cost
F = Scrap cost
G = Received cost (cost of assemblies completed already)

H = Original Quantity ordered
I = Quantity deviation
J = Quantity split from order
K = Quantity received (number of assemblies completed already)

净 WIP 成本不过是剩余总成本除以剩余总数量。所以简而言之,我只是想这样做:

select (A + B + C + D + E - F - G) / (H + I - J - K) from MyTable

减法在分子中运行良好,但一旦我在分母中减去,查询就简单地 returns 没有值(空白)。我试过这样的东西:

select (A + B + C + D + E - F - G) / (H + I - (J + K)) from MyTable
select (A + B + C + D + E - F - G) / (H + I + (-J) + (-K)) from MyTable
select (A + B + C + D + E - F - G) / (H + I + (J * -1) + (K * -1)) from MyTable

None 这些作品。只是好奇是否有人在 IBM 的 DB2 数据库上遇到过这个问题? 谢谢

如果您在数值计算中返回“空白”,那么您在某处有一个 NULL 值。尝试使用 coalesce():

nullif(coalesce(H, 0) + coalesce(I, 0) - coalesce(J, 0) - coalesce(K, 0), 0) 

您在 HIJK 列之一中有空值。使用以下命令搜索有问题的行:

select H, I, J, K
from MyTable
where H is null
   or I is null
   or J is null
   or K is null;

然后,你就可以按照自己的逻辑去对待那些特殊的情况了。通常,您将使用 COALESCE().

将这些空值替换为零或其他值

感谢大家的评论。我确实搜索了 NULL 的列,但没有。然后有很多情况,比方说,工厂将订单设置为 10 并完成(接收)10,没有拆分也没有偏差。在那种情况下:

H + I + J + K = 0 (+10 +0 -0 -10) = 0

我不能除以零。所以我有一个不同的解决方法,感谢大家的帮助。