请查看以下查询
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语句来实现这个目的?
答案 0 :(得分:2)
您可以通过稍微改写来简化查询:
select id,code
from MasterTable
where '07/31/2012' between StartDate and EndDate)
and (@status <> '0' or Status = @status)