startdateとenddateの2 つの日付で並べ替えたいのですが、どちらかが null になる可能性があります。
- 最初に開始日、次に終了日で注文したいと思います。
- 終了日がnullの場合、それで注文したくありません。
- 終了日が null のすべての開始日は、終了日が指定されたすべての開始日よりも前になります。
- 開始日が null の場合、それらのエントリをリストの最後にします。(開始日が null の場合、終了日も null に関連付けられます。)
startdateとenddateの2 つの日付で並べ替えたいのですが、どちらかが null になる可能性があります。
この ORDER BY 句はそれを行う必要があります。
ORDER BY
CASE WHEN startdate IS NULL THEN 1 ELSE 0 END,
startdate,
CASE WHEN enddate IS NULL THEN 0 ELSE 1 END,
enddate
DBMS によっては、これを行うためのより簡単な方法があるかもしれませんが、必ずしも移植可能ではありません。
データベースが Oracle の場合、次のように記述できます。
SELECT startdate, enddate
FROM yourtable
ORDER by startdate NULLS LAST, enddate NULLS FIRST;