Как удалить нули и заменить их нулевыми значениями, учитывая, что они действительно не являются нулевым значением?Pivot with giveniff
Мои рабочие данные
id class startdate enddate
1 High 1/1/15 2/1/15
1 Low 5/1/15 6/1/15
1 Mid 6/1/15 6/10/15
2 Mid-low 6/1/15 6/10/15
Мой запрос ниже
select y.id, y.startdate, y.enddate, ISNULL(y.High,'') AS HIGH, ISNULL(y.MID,'') AS MID, ISNULL(y.LOW,'') AS LOW, ISNULL(y.Mid-low,'') AS Mid-low,
from
(
select id, class, datediff(day, startDate, endDate) as days
from @test
) x
pivot
(
max(days) for class in (high, low, med)
) y
Это возвращает установленное значение ниже
id High Mid low Mid-low
1 30 9 30 0
2 0 0 0 30
Однако имейте в виду, что NULLIF() не будет различать числа, которые фактически равны нулю, и числа, которые были NULL, которые суммируются с нулем. Все нули будут отображаться как NULL. –
@TabAlleman Правильно, и у меня есть случаи, когда нуль на самом деле равен нулю. Есть ли способ обойти это? –
@TabAlleman Мне, должно быть, что-то не хватает здесь ... где это суммирование продолжается? Я не вижу 'SUM()' в его запросе PIVOT, только 'MAX()'. –