我有一个使用子查询的 SQL 脚本,子查询的结果有时可能为 NULL,因此在这些情况下我使用
ISNULL
将结果设置为零 (0)。
我要解决的问题是我需要在计算中使用那个零。计算是为了查看系统是否有足够的特定商品库存,因此基本上是: 库存数量 - 需要数量 = 余额
如果子查询返回0和数量。需要 8,那么结果应该是 -8,但目前由于
ISNULL
函数,结果将仅显示为 0。
ISNULL((
SELECT
SUM(ILE.[Remaining Quantity]) - CTE.[ExtendedQuantity]
FROM [Item Ledger Entry] ILE
GROUP BY ILE.[Item No_]
HAVING (CTE.[ItemNo] = ILE.[Item No_])
),0) AS [Balance]
我尝试使用 case 表达式,但不确定如何使用子查询来构造它以使其工作,但它仍然是可能的。
当前结果:
货号 | 数量有货 | 数量需要 | 平衡 |
---|---|---|---|
017030 | 0 | 8 | 0 |
期望的结果:
货号 | 数量有货 | 数量需要 | 平衡 |
---|---|---|---|
017030 | 0 | 8 | -8 |
我认为我需要以某种方式修改我使用
ISNULL
的方式,只是不确定要尝试什么方法,如果需要更多信息,请告诉我。
你试过这个吗:
(SELECT
SUM( ISNULL(ILE.[Remaining Quantity],0)) - CTE.[ExtendedQuantity]
FROM [Item Ledger Entry] ILE
GROUP BY ILE.[Item No_]
HAVING (CTE.[ItemNo] = ILE.[Item No_])
) AS [Balance]