2013-04-05 4 views
1

Следующий код успешно генерирует Pivot (показанный ниже код)Преобразование значения NULL 0 в SQL Pivot

select * 
from (
Select GLAccount , DC , Amount from AccountingTxns a where Acctno = '178523' 
) 
TableData 
pivot (
sum (Amount) 
for DC in ([D],[C]) 
) 
as SumAmountDC 
 
GLAccount    D  C 
InterestDue  3801.37 3731.68 
Cash   25600 25000 
IntReceivable 3801.37 3801.37 
IntIncome  NULL 3684.47 
IntOverdue  NULL 116.9 
Principal  25000 21868.32 

Как я избавиться от значения NULL (т.е. конвертировать их в 0-х)?

ответ

2

COALESCE использование,

SELECT GLAccount, 
     COALESCE(D, 0) D, 
     COALESCE(C, 0) C 
FROM 
     (
      SELECT GLAccount, 
        DC , 
        Amount 
      FROM AccountingTxns a 
      WHERE Acctno = '178523' 
     ) TableData 
     PIVOT 
     (
      SUM(Amount) 
      FOR DC IN ([D],[C]) 
     ) SumAmountDC 
+0

Пробовал различные комбинации. Все дали ошибки. Чтобы уточнить, имя столбца DC, и оно имеет значения D или C. Некоторые GLAccounts не имеют ни D, ни C, и поэтому Pivot дает NULL суммы для этих GLAccounts. Полный скорректированный код может помочь. – user1955215

+0

см. Мой обновленный ответ. –

+0

Спасибо. Получил правильные результаты. Однако небольшая коррекция. Вторая последняя строка должна читать «FOR DC IN .....». Пожалуйста обновите. – user1955215

Смежные вопросы