Я думаю, что вы хотите:
select id, sum(val = 3) as valcount
from (select id, s1 as val from t1 union all
select id, s2 from t1 union all
select id, s3 from t1 union all
select id, s4 from t1 union all
select id, s5 from t1
) sub
group by id;
То есть вы не хотите «считать NULL-значения как 0» (что бы это ни значило. Вы хотите включить идентификаторы, которые не имеют 3
внабор результатов со счетом 0
.
Следует отметить, что ответ forpas на ваш предыдущий вопрос является правильным способом решения этой проблемы. Нет необходимости агрегировать по всему набору данных - это может бытьдорогая операция.