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)
您在 H
、I
、J
或 K
列之一中有空值。使用以下命令搜索有问题的行:
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
我不能除以零。所以我有一个不同的解决方法,感谢大家的帮助。
我正在处理制造成本和制造的价值(“正在进行的网络”)。 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)
您在 H
、I
、J
或 K
列之一中有空值。使用以下命令搜索有问题的行:
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
我不能除以零。所以我有一个不同的解决方法,感谢大家的帮助。