Если вы зададите псевдонимы для столбцов в предложении IN (...)
, вы можете явно обратиться к ним в основном списке выбора и применить nvl
или coalesce
:
SELECT COALESCE(a, 0) as a,
COALESCE(p, 0) as p,
COALESCE(y, 0) as y,
COALESCE(b, 0) as b
FROM (
SELECT COUNT(DISTINCT cr.report_id) report_id, cr.contact_type
FROM contact_report cr
WHERE cr.contact_type IN ('A','P','Y','B')
GROUP BY cr.contact_type
)
PIVOT (
SUM(report_id)
FOR contact_type IN (
'A' as a,
'P' as p,
'Y' as y,
'B' as b
)
);
A P Y B
---------- ---------- ---------- ----------
4 2 0 1
Ну, у вас нет для их псевдонима, но используются значения по умолчанию:
SELECT COALESCE("'A'", 0) as a,
COALESCE("'P'", 0) as p,
COALESCE("'Y'", 0) as y,
COALESCE("'B'", 0) as b
FROM (
...
* С 1011 * работать немного сложнее.
В этом случае не имеет значения, используете ли вы sum
или max
, но я думаю, что было бы более привычным использовать max
.