Vous n'êtes pas obligé de le faire, vous pouvez le contourner en faisant quelque chose comme
SELECT *
FROM [Query]
WHERE (@Parameter = 1 AND Column1 = 8)
OR (@Parameter = 2 AND Column2 = 8)
OR (@Parameter = 3 AND Column3 = 8)
Cependant, ce n'est pas parce que vous pouvez faire quelque chose que vous devez le faire. Un SQL moins verbeux ne signifie pas de meilleures performances, utilisez donc quelque chose comme :
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
tandis que l'équivalent de la première requête devrait se traduire par de meilleures performances car il sera mieux optimisé.