Du kan skriva flera fall, även om de alla har samma villkor.
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
Egentligen anger du inte en kolumn att sortera efter, utan ett uttryck.
Fallsatsen returnerar null om villkoret inte är uppfyllt, så egentligen betyder det:
CASE @OrderByColumn WHEN 1 THEN Forename ELSE NULL END
Så om @OrderByColumn inte är 1 så returnerar satsen alltid NULL. Det utesluter förresten inte det från sortering, men det sätter ihop alla dessa rader i resultatet, vilket gör "SurName" till den avgörande sorteringen inom den gruppen av rader.