日期:2014-05-17 浏览次数:20587 次
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 ......
-->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)
------解决方案--------------------
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 */