where子句中的case语句和els什么都不做

时间:2012-09-05 11:51:47

标签: sql

请查看以下查询

DECLARE @status varchar(1)
DECLARE @code varchar(50)

Set @status = '0'

select id,code from MasterTable where 
('07/31/2012' between  StartDate and EndDate) and 
Case when @status = '0' and Status=@status then 1 end = 1 

此查询适用于我,但不适用于@Status=1

我需要像

这样的查询
if @Status = '0'
    select id,code from MasterTable where 
   ('07/31/2012' between  StartDate and EndDate) and Status = @Status
   if @code <> '0' 
        select id,code from MasterTable where 
        ('07/31/2012' between  StartDate and EndDate) and Status = @Status and code =@code
else
     select id,code from MasterTable where 
   ('07/31/2012' between  StartDate and EndDate) 
      if @code <> '0' 
        select id,code from MasterTable where 
        ('07/31/2012' between  StartDate and EndDate) and Status = @Status and code =@code     

如何使用case语句来实现这个目的?

1 个答案:

答案 0 :(得分:2)

您可以通过稍微改写来简化查询:

select  id,code 
from    MasterTable 
where   '07/31/2012' between  StartDate and EndDate)
        and (@status <> '0' or Status = @status)