Мне нужно вернуть ноль, если подзапрос не возвращает строк. Я попробовал несколько предложений, найденных здесь, на SO, безрезультатно, вместе с аргументом case и coalesce.SQL Server: возвращает нуль всех строк, если результат суб-запроса IS NULL
Моя конечная цель состоит в том, чтобы суммировать полученные результаты подзапроса вместе, но поскольку запрос «misc» не возвращает строк, поле 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
Я идиот. Спасибо, Сиюаль. – thelincster