Oracle
 sql >> Database >  >> RDS >> Oracle

Ordina le righe utilizzando colonne da un numero inferiore di null a nessun null

Questo è piuttosto doloroso. Fondamentalmente un metodo utilizza un'aggiunta gigante di case espressioni, come:

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

Sarebbe molto più semplice correggere il tuo modello di dati per memorizzare i codici come righe piuttosto che colonne. Quindi, puoi utilizzare l'aggregazione:

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