すべてが同じ条件であっても、複数のケースを書くことができます。
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」がその行グループ内の決定的な並べ替えになります。