Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server 2008, diferentes cláusulas WHERE com uma consulta


Você não precisa, você pode contornar isso fazendo algo como
SELECT  *
FROM    [Query]
WHERE   (@Parameter = 1 AND Column1 = 8)
OR      (@Parameter = 2 AND Column2 = 8)
OR      (@Parameter = 3 AND Column3 = 8)

No entanto, só porque você pode fazer algo, não significa que você deve. SQL menos detalhado não significa melhor desempenho, então usar algo como:
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

enquanto equivalente à primeira consulta deve resultar em melhor desempenho, pois será otimizado melhor.