【发布时间】:2017-02-10 21:04:03
【问题描述】:
如果子查询没有返回行,我需要返回零。我尝试了在 SO 上找到的多个建议,但无济于事,以及案例陈述和合并。
我的最终目标是将生成的子查询结果加在一起,但由于“杂项”查询不返回任何行,因此 TTL 字段为空白。
我哪里错了,我该如何纠正?
Select
s.STID,
rent.amt As RENT,
misc.amt As MISC,
rent.amt + misc.amt As TTL
From
(Select
s.STID
From
Stores s
Where
s.STID Not In (7, 999) ) As s
Left Join
(Select
Income.STID,
Sum(Case When Income.Amount Is Null Then 0 Else Income.Amount End) As amt
From
Income
Inner Join
IncomeTypes On IncomeTypes.IncTypeID = Income.IncTypeID
Inner Join
IncomeSection On IncomeSection.IncSecID = IncomeTypes.IncSecID
Where
Income.IncomeDate = dbo.getdateparam(92, 999) And
IncomeTypes.IncTypeID In (1, 2)
Group By
Income.STID) As rent on s.STID = rent.STID
Left Join
(Select
Income.STID,
Coalesce(Sum(Income.Amount), 0) As amt
From
Income
Inner Join
IncomeTypes On IncomeTypes.IncTypeID = Income.IncTypeID
Inner Join
IncomeSection On IncomeSection.IncSecID = IncomeTypes.IncSecID
Where
Income.IncomeDate = dbo.getdateparam(92, 999) And
IncomeTypes.IncTypeID In (20, 21, 22)
Group By
Income.STID) As misc On s.STID = misc.STID
Order By
s.STID
目前返回:
STID RENT MISC TTL
1 1234.56
2 1234.56
3 1234.56
4 1234.56
5 1234.56
我花了三个小时试图返回如下:
STID RENT MISC TTL
1 1234.56 0 1234.56
2 1234.56 0 1234.56
3 1234.56 0 1234.56
4 1234.56 0 1234.56
5 1234.56 0 1234.56
【问题讨论】:
标签: sql-server subquery