我曾尝试使用CASE语句来改变依赖于SQL Server的输入值的连接条件,我有写例如这个如下内连接使用Case语句,寻找更好的选择
go
declare @parentNumber int=0
declare @parent table (prowid bigint,name varchar(200));
insert into @parent (prowid,name) values (1,'A');
insert into @parent (prowid,name) values (2,'B');
declare @child table(crowid bigint,prowid bigint,prowid2 bigint, name varchar(200));
insert into @child (crowid,prowid,prowid2,name) values (1,1,2,'AA_BA')
insert into @child (crowid,prowid,prowid2,name) values (2,1,2,'AB_BB')
insert into @child (crowid,prowid,prowid2,name) values (3,1,2,'AC_BC')
--parentname will be of prowid
select pr.name as ParentName,ch.* from @parent pr
inner join @child ch on
(CASE WHEN @parentNumber=0 THEN ch.prowid ELSE ch.prowid2 END)=pr.prowid
SET @parentNumber=1
--parentname will be of prowid2
select pr.name as ParentName,ch.* from @parent pr
inner join @child ch on
(CASE WHEN @parentNumber=0 THEN ch.prowid ELSE ch.prowid2 END)=pr.prowid
go
解释我有表参数,所以你可以直接在你的查询窗口中运行,据我所知,case语句减慢查询执行。所以我在这里,如果任何人都可以建议我更好的解决办法......但是使用另一加入...像
等待大家的回复........
你的问题是什么? – 2011-12-28 09:51:07
你只是在@parentNumber swicthing? – gbn 2011-12-28 09:53:55
是否有任何其他方式来做到这一点,改变与输入参数的连接.. – 2011-12-28 09:54:44