Bạn có thể viết nhiều trường hợp, ngay cả khi tất cả chúng đều có cùng một điều kiện.
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
Trên thực tế, bạn không chỉ định một cột để sắp xếp, mà là một biểu thức.
Câu lệnh case trả về null nếu điều kiện không được đáp ứng, vì vậy thực tế nó có nghĩa là:
CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END
Vì vậy, nếu @OrderByColumn không phải là 1 thì câu lệnh trả về luôn là NULL. Nhân tiện, điều đó không loại trừ nó khỏi việc sắp xếp, nhưng nó đặt tất cả các hàng đó lại với nhau trong kết quả, làm cho 'SurName' trở thành phân loại quyết định trong nhóm hàng đó.