日期:2014-05-17  浏览次数:20557 次

多条件判断 查询语句询问!~
SQL code

create table #入库表
(DATE datetime, --日期
 ITEM varchar(10), --科目
 TYPE varchar(10), --类型
 QTY int) --数量
insert into #入库表 values('2011-1-1', '医药', '入库', 10)
insert into #入库表 values('2011-1-2', '医药', '出库', 10)
insert into #入库表 values('2011-1-3', '医药', '出库', 20)
insert into #入库表 values('2011-1-4', '衣物', '出库', 15)
insert into #入库表 values('2011-1-5', '食品', '入库', 5 )
insert into #入库表 values('2011-1-6', '食品', '出库', 1 )
insert into #入库表 values('2011-1-7', '衣物、玩具', '入库', 30)

--创建 领用表
create table #领用表
(DATE datetime, --日期
 ITEM varchar(10), --科目
 TYPE varchar(10), --类型
 QTY int) --数量
insert into #领用表 values('2011-1-7', '食品', '领用', 30 )
insert into #领用表 values('2011-1-5', '衣物', '领用', 30 )
insert into #领用表 values('2011-1-3', '食品', '领用', 30 )

查询条件:
 当参数为1:ITEM Like '%衣物%' And TYPE <> 出库
 当参数为2:ITEM Like '%食品%' 
 当参数为3:TYPE = 出库
 当参数为4:DATE 在领用表中出现

查询#入库表中符合条件的数据。
请问该如何编写!~~

Declare @参数 Varchar(4)
    Set @参数 = '2'
Select ......
 


------解决方案--------------------
SQL code

-->try
Declare @参数 Varchar(4)    
declare @sql nvarchar(max)
Set @参数 = '3'
set @sql='select * from #入库表 t where '
select @sql=@sql+case when @参数='1' then N'ITEM Like ''%衣物%'' And TYPE <> N''出库'''
                      when @参数='2' then N'ITEM Like ''%食品%'''
                      when @参数='3' then N'TYPE = N''出库'''
                      when @参数='4' then N'exists(select 1 from #领用表 where Date=t.Date)'
                 end
print @sql
exec(@sql)

------解决方案--------------------
SQL code
create table #入库表
(DATE datetime, --日期
 ITEM varchar(10), --科目
 TYPE varchar(10), --类型
 QTY int) --数量
insert into #入库表 values('2011-1-1', '医药', '入库', 10)
insert into #入库表 values('2011-1-2', '医药', '出库', 10)
insert into #入库表 values('2011-1-3', '医药', '出库', 20)
insert into #入库表 values('2011-1-4', '衣物', '出库', 15)
insert into #入库表 values('2011-1-5', '食品', '入库', 5 )
insert into #入库表 values('2011-1-6', '食品', '出库', 1 )
insert into #入库表 values('2011-1-7', '衣物、玩具', '入库', 30)

--创建 领用表
create table #领用表
(DATE datetime, --日期
 ITEM varchar(10), --科目
 TYPE varchar(10), --类型
 QTY int) --数量
insert into #领用表 values('2011-1-7', '食品', '领用', 30 )
insert into #领用表 values('2011-1-5', '衣物', '领用', 30 )
insert into #领用表 values('2011-1-3', '食品', '领用', 30 )

Declare @参数 Varchar(4)
--设置参数(1、2、3、4)
Set @参数 = '1'  --自己设定
--判断@参数的值
if @参数='1'
begin
select date,item,type,qty from #入库表 where 
ITEM Like '%衣物%' And TYPE <> '出库'
end
else if @参数='2'
begin
select date,item,type,qty from #入库表 where 
ITEM Like '%食品%'
end
else if @参数='3'
begin
select date,item,type,qty from #入库表 where 
TYPE = '出库'
end
else if @参数='4'
begin
select date,item,type,qty from #领用表 where date='2011-1-7'  --时间自己设定
end
--用完删表,编程好习惯
drop table #入库表,#领用表


/*
--测试
--set @参数='1'

date                        item       type       qty         
--------------------------- ---------- ---------- ----------- 
2011-01-07 00:00:00.000     衣物、玩具      入库         30

--set @参数='2'
date                        item       type       qty         
--------------------------- ---------- ---------- ----------- 
2011-01-05 00:00:00.000     食品         入库         5
2011-01-06 00:00:00.000     食品         出库         1

--set @参数='3'
date                        item       type       qty         
--------------------------- ---------- ---------- ----------- 
2011-01-02 00:00:00.000     医药         出库         10
2011-01-03 00:00:00.000     医药         出库         20
2011-01-04 00:00:00.000     衣物         出库         15
2011-01-06 00:00:00.000     食品         出库         1

--set @参数='4'
date                        item       type       qty         
--------------------------- ---------- ---------- ----------- 
2011-01-07 00:00:00.000     食品         领用         30

*/