La risposta più immediata è questa: la soluzione migliore per cambiare l'ordinamento dei valori nulli nei casi necessari è quella accettata.Ma basta usarlo, o una variante di esso nei casi necessari:
DISC + NULLS FIRST:
ORDER BY (CASE WHEN [Order] IS NULL THEN 0 ELSE 1 END), [Order] DESC
ASC + NULLS LAST:
ORDER BY (CASE WHEN [Order] IS NULL THEN 1 ELSE 0 END), [Order] ASC
ASC + NULLS PRIMA: funziona di default
DESC + NULLS ULTIME: funziona benissimo per default
Vediamo perché:
Se si seleziona la ORDER BY Clause (Transact-SQL) MSDN docs, e scorrere verso il basso per ASC | DESC
, potete leggere questo:
ASC | DESC
Specifica che i valori nella colonna specificata devono essere ordinati in ordine crescente o decrescente. ASC ordina dal valore più basso al valore più alto. DESC ordina dal valore più alto al valore più basso. ASC è l'ordinamento predefinito. I valori nulli vengono considerati come i valori più bassi possibili.
Quindi, per impostazione predefinita se si specifica l'ordine ASC
, funziona come NULLS FIRST
. E, se si specifica DESC
, funziona come NULLS LAST
.
modo che solo bisogno di fare modificare il comportamento per NULLS FIRST
in DESC
ordine, e per NULLS LAST
in ASC
ordine.
IMHO, la soluzione migliore per modificare l'ordinamento di null nei casi necessari è accettata, ma l'ho inclusa adattandola ai diversi casi all'inizio della mia risposta.
Possibile duplicato di http://stackoverflow.com/questions/821798/order-by-date-showing-nulls-first-then-most-recent-dates –