私は現在、このようなデータが表示されますクエリを持っている:私はときSQL ServerでNULL結果の順序が異なっていますか?
ID | Name | Arrival | Departure
-----------------------------------
1 | John | NULL | 2:30:00
2 | John | NULL | 11:00:00
3 | John | NULL | 14:00:00
4 | John | 10:30:00 | 11:00:00
5 | John | 12:00:00 | 13:00:00
はこれがある:order by Name, Arrival, Departure
。
しかし、私が代わりに希望することは以下の通りです:到着エントリがNULL
ある
- 場合、その行は 出発欄で注文する必要があります。
- 到着エントリは
NULL
と 同じ出発データを持つ複数の行がある場合には、それは は到着 エントリを持って後に他の行を注文する必要があります。
結果:
ID | Name | Arrival | Departure
-----------------------------------
1 | John | NULL | 2:30:00
4 | John | 10:30:00 | 11:00:00
2 | John | NULL | 11:00:00
5 | John | 12:00:00 | 13:00:00
3 | John | NULL | 14:00:00
編集:これは重複して質問です思った人のために - 元々の質問が原因第二の条件に同じではありません。ただし、データが構造化されているため(到着時刻は出発時刻の前に常に表示されます)、同じ回答が適用されます。
編集2:出発はNULLでもかまいません。 Departureがnullの場合、Arrivalエントリはnullではありません。この場合、到着順に発注する必要があります。 2つの行の両方に同じ到着エントリがある場合、NULLはNULL以外である必要があります。これは、NULLの到着エントリ(上記の条件2)の反対であることに注意してください。ここで、NULLはNULL以外の後です。
[条件付き列の値に応じてORDER BYの可能な複製](http://stackoverflow.com/questions/7464434/conditional-order-by-depending-on-column-values) –
第2のルールは多少不明です私。行4の到着が11:00:00になると、到着がnullで出発時刻が11:00:00の行の前に常にあるはずですか? –
@JoachimIsaksson同じ出発点の値を持つ行と、nullを持つエントリの両方を意味します。到着値は、null以外の到着値を持つ行の下にある必要があります。私が言及した理由は、通常はNULLが非NULL値の前に順序付けされるためです。上記の意図した結果では、行4は、null以外のArrival値を持つため、行2の上にあります。 – painiyff