Sie können mehrere Fälle schreiben, auch wenn sie alle dieselbe Bedingung haben.
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
Eigentlich geben Sie keine Spalte an, nach der sortiert werden soll, sondern einen Ausdruck.
Die case-Anweisung gibt null zurück, wenn die Bedingung nicht erfüllt ist, also bedeutet sie eigentlich:
CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END
Wenn also @OrderByColumn nicht 1 ist, gibt die Anweisung immer NULL zurück. Das schließt es übrigens nicht von der Sortierung aus, aber es fügt all diese Zeilen im Ergebnis zusammen und macht 'Nachname' zur entscheidenden Sortierung innerhalb dieser Gruppe von Zeilen.