如何解决如何在动态查询中两次使用临时表?
我想在动态查询中使用表变量。
所以我喜欢以下内容:
B
而且效果很好。
但是,我需要两次使用临时表,如下所示:
AAdapter
但是,它不起作用。
如果我删除一个条件,它就可以正常工作。
所以我想临时表只能使用一次。
我该如何解决?
编辑:这很好:
SET @sql_query = N'
SELECT *
from #temptable
'
EXEC sp_executesql @sql_query;
这也可以正常工作:
SET @sql_query = N'
SELECT *
from #temptable tm1
where tm1.column1 in (select column2 from #tttable)
OR tm1.column3 in (select column4 from #tttable)
'
EXEC sp_executesql @sql_query;
我想说条件没有问题。
现在,如果我所讨论的代码错误消息是:
'#tt'附近的语法不正确。
解决方法
我解决了这个问题... 问题是“ @sql_query”的大小。 临时表可以使用两次,如下所示:
谢谢。
create table #temp1
(
column1 varchar(10)
)
create table #temp2
(
column2 varchar(10),column3 varchar(10),column4 varchar(10)
)
create table #temp3
(
column5 varchar(10)
)
insert into #temp1 values('aaa')
insert into #temp2 values('aaa','bbb1','ccc')
insert into #temp2 values('aaa','bbb2','ccc')
insert into #temp2 values('aaa2','bbb3','ccc2')
insert into #temp2 values('aaa2','bbb4','ccc2')
insert into #temp3 values('aaa')
insert into #temp3 values('aaa2')
declare @sql_query NVARCHAR(1000) = N'
select *,RANK() OVER(PARTITION BY temp2.column2 order by temp2.column3 desc ) as MAXRank
from #temp2 temp2
join #temp3 temp3
on temp2.column2 = temp3.column5
and
(
(column2 in (select column1 from #temp1) and column4 = temp3.column5)
OR (column2 not in (select column1 from #temp1) and column4 != temp3.column5)
OR column3 = ''bbb1''
)
'
EXEC sp_executesql @sql_query;
DROP TABLE #temp1
DROP TABLE #temp2
DROP TABLE #temp3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。