Puoi scrivere più casi, anche se hanno tutti la stessa condizione.
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
In realtà, non specifichi una colonna in base alla quale ordinare, ma un'espressione.
L'istruzione case restituisce null se la condizione non è soddisfatta, quindi in realtà significa:
CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END
Quindi, se @OrderByColumn non è 1, l'istruzione restituisce sempre NULL. Ciò non lo esclude dall'ordinamento, tra l'altro, ma mette insieme tutte quelle righe nel risultato, rendendo "Cognome" l'ordinamento decisivo all'interno di quel gruppo di righe.