SQL Return 子查询分组中的总和列为零

SQL Return Zero For Summed Column In Subquery Grouping

我有两个子查询,一个返回一组数据并对分组中的一列求和,另一个做同样的事情但条件是批准日期不为空。然后将两者连接起来并从中进行选择,得到如下结果:

ID - Requested - Approved

如果我现在 运行 它,它 returns 类似于 1 - 2 - NULL,因为我正在测试的记录未获批准。在这种情况下,我希望 "Approved" 列显示 0 而不是 "NULL"。我对复杂的查询还不够熟悉,所以我不确定如何执行此操作,但我确信这是可能的。

顺便说一下,这是与 MS SQL 服务器一起使用的,所以 T-SQL 之类的东西如果更容易的话就可以了。

这是现在的查询:

select sr.ItemID, Requested, Approved from 

(select sri.ItemID, Requested = sum(sri.Quantity) from SupplyRequestItem as sri inner join
SupplyRequest as sr on sr.ID = sri.RequestID
group by sri.ItemID) as sr left outer join

(select sri.ItemID, Approved = sum(sri.Quantity) from SupplyRequestItem as sri inner join
SupplyRequest as sr on sr.ID = sri.RequestID
where sr.ApprovedDate is not null
group by sri.ItemID) as asr on sr.ItemID = asr.ItemID

您可以使用条件聚合以更简单的方式进行。根据需要更改 case 表达式。

select sri.ItemID, 
Requested = sum(case when sr.ApprovedDate is null then sri.Quantity else 0 end),
Approved = sum(case when sr.ApprovedDate is not null then sri.Quantity else 0 end) 
from SupplyRequestItem as sri 
inner join SupplyRequest as sr on sr.ID = sri.RequestID
group by sri.ItemID