IBM DB2:SQL减法在分母中无效

q8l4jmvw  于 2022-11-07  发布在  DB2
关注(0)|答案(3)|浏览(201)

我正在处理制造成本和尚未完成的制造价值(“在制品净值”)。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)

净在制品成本等于总剩余成本除以总剩余数量。因此,简而言之,我只是想这样做:

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) + (-K)) from MyTable
select (A + B + C + D + E - F - G) / (H + I + (J * -1) + (K * -1)) from MyTable

这些都不起作用。只是想知道是否有人在IBM的DB2数据库上遇到过这个问题?谢谢。

oalqel3c

oalqel3c1#

如果在数值计算中返回“blank”,则说明在某处存在NULL值。请尝试使用coalesce()

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

0vvn1miw2#

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()将这些空值替换为零或其他值。

pes8fvy9

pes8fvy93#

感谢大家的意见。我确实搜索了空值的列,但没有任何空值。然后有很多情况,比如说,工厂将订单设置为10,并完成(接收)10,没有拆分和偏差。在这种情况下:
(1)在第(2)款中,“第(1)款”是指“第(2)款”。
我不能被零除,所以我有一个不同的解决方法,谢谢大家的帮助。

相关问题