2010-03-02 72 views

回答

6

对不起,没有:

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

尝试:

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

它可能是更好地尝试在价值加入并使用索引:

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