sql >> Base de Datos >  >> RDS >> Oracle

Ordene filas usando columnas de menos número de nulos a sin nulos

Esto es bastante doloroso. Básicamente, un método usa una adición gigante de case expresiones, como:

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

Sería mucho más sencillo arreglar su modelo de datos para almacenar los códigos como filas en lugar de columnas. Entonces, podría usar la agregación:

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