多条件判断 查询语句询问!~SQL codecreate table #入库表(DATE datetime, --日期 ITEM varchar(10), --科
多条件判断 查询语句询问!~
- 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
-->tryDeclare @参数 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)' endprint @sqlexec(@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'beginselect date,item,type,qty from #入库表 where ITEM Like '%衣物%' And TYPE <> '出库'endelse if @参数='2'beginselect date,item,type,qty from #入库表 where ITEM Like '%食品%'endelse if @参数='3'beginselect date,item,type,qty from #入库表 where TYPE = '出库'endelse if @参数='4'beginselect 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 食品 入库 52011-01-06 00:00:00.000 食品 出库 1--set @参数='3'date item type qty --------------------------- ---------- ---------- ----------- 2011-01-02 00:00:00.000 医药 出库 102011-01-03 00:00:00.000 医药 出库 202011-01-04 00:00:00.000 衣物 出库 152011-01-06 00:00:00.000 食品 出库 1--set @参数='4'date item type qty --------------------------- ---------- ---------- ----------- 2011-01-07 00:00:00.000 食品 领用 30*/ 