Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ordnen Sie Zeilen mit Spalten von weniger Nullen bis zu keinen Nullen

Das ist ziemlich schmerzhaft. Grundsätzlich verwendet eine Methode einen riesigen Zusatz von case Ausdrücke wie:

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)
    + ...

Es wäre viel einfacher, Ihr Datenmodell so anzupassen, dass die Codes als Zeilen gespeichert werden eher als Spalten. Dann könnten Sie Aggregation verwenden:

select id, quarter
from mytable
group by id, quarter
order by count(cod) desc