2つの数値列に基づいてソートされる表があります(列Xおよび列Yと呼びます)。各行では、2つの列の両方に数値(この場合はX < = Y)を指定するか、列の1つをNULLにすることができます。SQL:2列のインターレース値に基づくORDER BY
例データ:
X Y
----- -----
... NULL 26
... 31 NULL
... 1 7
... 39 46
... NULL 36
... 15 16
... NULL 14
... 23 29
私は列が「正しく」をインターリーブするように、このデータをソートしたいと思います。具体的には:そうで
1)Xの値は、両方の列に存在する場合、X.
2に基づく順序)、Y値はY.
に基づいて、両方の行の順序で存在する場合3)それ以外の場合は、利用可能なX値と利用可能なY値を比較します。
例の「正しい」ソートデータは次のようになります。
X Y
----- -----
... 1 7
... NULL 14
... 15 16
... NULL 26
... 23 29
... 31 NULL
... NULL 36
... 39 46
ORDER BY句では、この分類を実行するための任意の簡単な方法はありますか?
どこに '... 25 NULL'を配置しますか? –
23/29から31/NULLになります。両方の行に値が設定されている場合は、X列でソートすることが優先されます。明確にする:目標は、2つの列のそれぞれの値がその列の他の値に対してソートされることになります。明白な理由から、これはX列では常に可能であり、通常はY列で「閉じる」ことが可能です - 25/27を検討してください。たとえこれがY列の誤った順序付けを引き起こすとしても、23/29以降にしなければならないだろう。 – VeeArr