首页 > 解决方案 > WHERE 子句中的 CASE - 传递多个值

问题描述

我需要在 where 子句中传递多个案例

SELECT *
FROM [dbname].[dbo].[tablename] CD, 
     [dbname].[dbo].Applications_N_Device_Master ADM
WHERE 
    CD.Product_ID = ADM.Product_ID
    AND CD.Reg_Date BETWEEN @FromDate AND @ToDate
    AND CD.CompType_ID = '2' 
    AND cd.closed IN (CASE 
                         WHEN @Status = 'yes' OR 'NO' 
                            THEN @status
                            ELSE 'YES', 'NO'
                      END)
ORDER BY 
    CD.Comp_ID DESC

else 'YES','NO'我收到一个错误

标签: sqlsql-server

解决方案


SELECT *
FROM [dbname].[dbo].[tablename] CD,  
     [dbname].[dbo].Applications_N_Device_Master ADM
WHERE CD.Product_ID = ADM.Product_ID 
  AND CD.Reg_Date BETWEEN @FromDate AND @ToDate 
  AND CD.CompType_ID='2' 
  AND (
        (@status IN ('yes', 'NO') AND cd.closed = @status) OR
        (@status NOT IN ('yes', 'NO') AND cd.closed IN ('YES', 'NO'))
      )
ORDER BY 
    CD.Comp_ID DESC

您可能想要使用ISNULLwith@status来处理空值。


推荐阅读