sql >> データベース >  >> RDS >> Sqlserver

複数の列と降順/昇順ソートを含む Order By 句の CASE ステートメント

    すべてが同じ条件であっても、複数のケースを書くことができます。

    ORDER BY 
        CASE @OrderByColumn WHEN 1 THEN Forename END DESC, 
        CASE @OrderByColumn WHEN 1 THEN Date END, 
        CASE @OrderByColumn WHEN 1 THEN Location END, 
        CASE @OrderByColumn WHEN 2 THEN Surname END ASC 
    

    実際には、ソートする列を指定するのではなく、式を指定します。

    条件が満たされない場合、case ステートメントは null を返すため、実際には次のことを意味します:

    CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END
    

    したがって、@OrderByColumn が 1 でない場合、ステートメントは常に NULL を返します。ちなみに、それは並べ替えから除外されませんが、これらすべての行が結果にまとめられ、「SurName」がその行グループ内の決定的な並べ替えになります。



    1. mysqlテーブルのインデックスを再作成する方法

    2. MariaDBでのPERIOD_ADD()のしくみ

    3. SQLServerでのページの平均余命の監視

    4. Flask_SQLAlchemy、MySQL、スウェーデン語の文字を格納するå、ä、ö?