Можете да напишете няколко случая, дори ако всички те имат едно и също състояние.
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 връща нула, ако условието не е изпълнено, така че всъщност означава:
CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END
Така че, ако @OrderByColumn не е 1, операторът винаги връща NULL. Между другото, това не го изключва от сортирането, но поставя всички тези редове заедно в резултата, което прави „Фамилно име“ решаващото сортиране в тази група редове.