Vous pouvez écrire plusieurs cas, même s'ils ont tous la même condition.
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
En fait, vous ne spécifiez pas une colonne à trier, mais une expression.
L'instruction case renvoie null si la condition n'est pas remplie, donc cela signifie en fait :
CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END
Donc, si @OrderByColumn n'est pas 1, l'instruction renvoie toujours NULL. Soit dit en passant, cela ne l'exclut pas du tri, mais cela rassemble toutes ces lignes dans le résultat, faisant de 'SurName' le tri décisif au sein de ce groupe de lignes.