Das müssen Sie nicht, Sie können es umgehen, indem Sie so etwas wie
tunSELECT *
FROM [Query]
WHERE (@Parameter = 1 AND Column1 = 8)
OR (@Parameter = 2 AND Column2 = 8)
OR (@Parameter = 3 AND Column3 = 8)
Aber nur weil man etwas kann, heißt das noch lange nicht, dass man es auch sollte. Weniger ausführliches SQL bedeutet keine bessere Leistung, also verwenden Sie etwas wie:
IF @Parameter = 1
BEGIN
SELECT *
FROM [Query]
WHERE Column1 = 8
END
ELSE IF @Parameter = 2
BEGIN
SELECT *
FROM [Query]
WHERE Column2 = 8
END
ELSE IF @Parameter = 3
BEGIN
SELECT *
FROM [Query]
WHERE Column3 = 8
END
obwohl sie der ersten Abfrage entspricht, sollte sie zu einer besseren Leistung führen, da sie besser optimiert wird.