如何在涉及子查询的计算中使用 ISNULL 结果

问题描述 投票:0回答:1

我有一个使用子查询的 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
的方式,只是不确定要尝试什么方法,如果需要更多信息,请告诉我。

sql sql-server subquery isnull
1个回答
0
投票

你试过这个吗:

   (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]
© www.soinside.com 2019 - 2024. All rights reserved.