Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server 2008, différentes clauses WHERE avec une seule requête

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é.