に選択されたレコードでレコードを並べ替え:のOracle SQL - あなたがこのようなデータを持つテーブルを持っている場合は、トップ
USER_ID USERNAME
34267 mark
15669 john
61268 allan
87779 mary
あなたが欲しい、これらのデータを選択し、それらを並べ替えるためには、最低の値を持つユーザーIDが上でなければなりませんでしたリストのトップへその後、残りのレコードはすべてユーザー名でアルファベット順にソートされます。だから、この場合、ジョンは最初にアレンとマリに続いて、マリをマークしなければなりません。
どのようにUNIONを使用せずにこれを行うことができますか。これは、それぞれの列に対して複数の順序がある複雑なクエリの一部に過ぎません。そう、私は本当にこのために組合を使用することはできません。このロジックを適用する必要があるのは、5番目と6番目の列の優先順位です。
order by (case when row_number() over (order by user_id) = 1 then 1 else 2 end), -- put minimum user_id on top
name asc
'ORDER BY USER_ID DESC、USERNAME' ?? –
この場合、USERNAMEの順序は一意ではないので、USER_IDはおそらく一意ではないので使用されません。 – NikNik
@Jaydipj:最低のuser_idを持つ1行だけを必要とし、残りのユーザー名をユーザー名で注文します。 –