2010-03-02 7 views

Répondre

6

Désolé, pas:

WHERE 
    (@flag = 1 AND record.field = a) 
    OR 
    (@flag = 2 AND record.field IN (b, c)) 
4

essayer:

WHERE (@flag = 1 AND record.field = a) 
    OR (@flag = 2 AND record.field IN (b, c)) 

il pourrait être préférable d'essayer de se joindre à la valeur et utiliser un index:

DECLARE @Table (ValueOf int) 
INSERT INTO @Table ((ValueOf) 
    SELECT a WHERE @flag = 1 
    UNION SELECT b WHERE @flag = 2 
    UNION SELECT c WHERE @flag = 2 

SELECT 
    .... 
    FROM ...   x 
    INNER JOIN @Table t ON x...=t.ValueOf 
Questions connexes