To jest dość bolesne. Zasadniczo jedna metoda wykorzystuje ogromny dodatek case
wyrażenia, takie jak:
order by
(case when cod_t1 is null then 1 else 0 end)
+ (case when cod_t2 is null then 1 else 0 end)
+ (case when cod_t3 is null then 1 else 0 end)
+ ...
Znacznie prościej byłoby naprawić model danych, aby przechowywać kody jako wiersze zamiast kolumn. Następnie możesz użyć agregacji:
select id, quarter
from mytable
group by id, quarter
order by count(cod) desc