0

startdateenddateの2 つの日付で並べ替えたいのですが、どちらかが null になる可能性があります。

  1. 最初に開始日、次に終了日で注文したいと思います。
  2. 終了日がnullの場合、それで注文したくありません。
  3. 終了日が null のすべての開始日は、終了日が指定されたすべての開始日よりも前になります。
  4. 開始日が null の場合、それらのエントリをリストの最後にします。(開始日が null の場合、終了日も null に関連付けられます。)
4

2 に答える 2

2

この 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 によっては、これを行うためのより簡単な方法があるかもしれませんが、必ずしも移植可能ではありません。

于 2012-12-31T23:35:42.507 に答える
2

データベースが Oracle の場合、次のように記述できます。

SELECT startdate, enddate
FROM yourtable
ORDER by startdate NULLS LAST, enddate NULLS FIRST;
于 2012-12-31T23:35:48.047 に答える