矛盾的条件检查案件陈述的位置

时间:2016-07-21 10:35:59

标签: sql tsql sql-server-2005

我想使用CASE检查同一字段的WHERE子句上的两个矛盾条件;

如果我提取我想要的东西,请在下面显示

WHERE FULFILMENT_STATUS_CODE != 'CNL'
WHERE FULFILMENT_STATUS_CODE = 'FUL'

他们按照以下方式尝试(并且想要),但我想知道如何拥有!=在她的

WHERE
    FULFILMENT_STATUS_CODE =
    CASE @pFILTER_TYPE
        WHEN 1 THEN 'CNL' 
        WHEN 2 THEN 'FUL' 
    END

1 个答案:

答案 0 :(得分:3)

请勿CASE使用WHEREORAND

WHERE 
    ( @pFILTER_TYPE = 1 AND FULFILMENT_STATUS_CODE <> 'CNL' )
OR 
    ( @pFILTER_TYPE = 2 AND FULFILMENT_STATUS_CODE = 'FUL' )

但是,除了为每条记录评估参数外,您还可以在此存储过程中使用IF...ELSE和两个不同的查询。这更详细但也更有效率。