LedgerId AccountId EntryType Debit Credit
2 2 D 50000.00 NULL
3 2 D 10000.00 NULL
4 2 C NULL 25000.00
6 2 C NULL 10000.00
7 2 D 89000.00 NULL
8 2 D 89000.00 NULL
10 3 D 715871.00 NULL
После запроса вычисляет Balance
:Арифметические операции на нуль
Select Accounts.ID [AccountID],Name,AccountType [AccountType], SUM(Debit) - SUM(Credit) [Balance] FROM Accounts
join Dealers on Accounts.DealerId = Dealers.ID
join Ledger on Accounts.ID = Ledger.AccountId
GROUP BY Accounts.ID, Name, AccountType
и возвращает:
AccountID Name AccountType Balance
2 Mateen P 203000.00
3 Shery P NULL
ожидается выход:
AccountID Name AccountType Balance
2 Mateen P 203000.00
3 Shery P 715871.00
Balance
для счета 3 является Null, он возвращает null
, когда дело доходит до вычитания чего-либо от null
.
Для примера:
select 5 - NULL
NULL
возвращается.
Вопрос: Теперь, как я могу получить Balance
вместо NULL
?
Что разн б/w 'isnull' и' coalesce'? – Shaharyar
@Shaharyar: [здесь хорошая статья] (http://sqlmag.com/t-sql/coalesce-vs-isnull) – potashin