[SQLServer][SQL] Order by で NULLを最後に持ってくる

仕事でMicrosoftのSQLServerを使っているが、このSQLServer、資格で勉強したORACLEのSQLと細かい部分で違っている。

今日知ったのはOrder by句におけるNULLの扱い。
デフォルトではNULLが先頭にくる。ORACLEにはNULLを最後に持ってくるオプションがあったが、SQLServerのOrder by句にはそのようなオプションは無いらしい。

という訳で、Order by句に以下のCase文を加えるのが手っ取り早いようだ。

    case when [列名] is null then 0 else 1 end desc

使うとすれば、こんな感じ。

 Select
     *
 From
     SYOHIN
 Order By
     case when PRICE is null then 0 else 1 end desc
    ,PRICE

こうすれば、PRICEという列の値を昇順でかつ、NULLを最後に並べることが出来る。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です