我正在处理制造成本和尚未完成的制造价值(“在制品净值”)。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数据库上遇到过这个问题?谢谢。
3条答案
按热度按时间oalqel3c1#
如果在数值计算中返回“blank”,则说明在某处存在
NULL
值。请尝试使用coalesce()
:0vvn1miw2#
在
H
、I
、J
或K
列中有空值。请使用以下命令搜索有问题的行:然后,您可以根据自己的逻辑处理这些特殊情况。通常,您将使用
COALESCE()
将这些空值替换为零或其他值。pes8fvy93#
感谢大家的意见。我确实搜索了空值的列,但没有任何空值。然后有很多情况,比如说,工厂将订单设置为10,并完成(接收)10,没有拆分和偏差。在这种情况下:
(1)在第(2)款中,“第(1)款”是指“第(2)款”。
我不能被零除,所以我有一个不同的解决方法,谢谢大家的帮助。