[英]How to execute this SQL Query
I am having following scenario 我有以下情况
Drop Table #Temp
Create Table #Temp(name1 text, name2 text)
Insert INTO #Temp Values ('test','test')
Insert INTO #Temp Values ('test','test')
Insert Into #Temp1 Select * From
(
;With CTE as (
Select * from #Temp
)
select * from CTE
)
I know we can't use CTE
as subquery .. but for hard time I don't know exact syntax of subquery since it is being provided by other system. 我知道我们不能将
CTE
用作子查询..但是由于我是由其他系统提供的,所以我很难知道子查询的确切语法。
just image this 只是成像这个
Insert Into #Temp1 Select * From
(
"Query Provided by Other System"
)
So I don't have any control on subquery (" Query Provided by Other System ").. And I have also tried dynamic sql query like 因此,我对子查询(“ 由其他系统提供的查询 ”)没有任何控制。而且我也尝试了动态sql查询,例如
Declare @subquery nvarchar(max)
set @subquery=';With CTE2 as ( Select * from #Temp) select * from CTE2'
INSERT INTO #Temp1 From (EXEC sp_executesql @subquery)
This also gives error... 这也给错误...
More Things to know : 更多须知 :
i)I don't know about what are the columns will sub query returns 我不知道子查询返回的列是什么
ii)And I don't have any control in sub query . ii)我在子查询中没有任何控制权。 like what is syntax of subquery and how it looks like?
例如子查询的语法是什么,它的外观如何?
so from these things, even I can't use dynamic sql ( EXEC sp_executesql
).because I don't know what will happen if @subquery
itself contains dynamic sql. 所以从这些事情来看,即使我不能使用动态sql(
EXEC sp_executesql
)。因为我不知道如果@subquery
本身包含动态sql会发生什么。
Please help anyone... 请帮助任何人...
Use like this, with dynamic sql. 这样使用动态sql。 It will work...
会的...
Insert Into #Temp1
EXEC sp_executesql @subquery
You can use the below syntax 您可以使用以下语法
;With CTE as (
Select * from #Temp
)
Insert Into #Temp1
Select *
From (
select * from CTE
) t
or if you don't have already created the #Temp1 table, use below code. 或者,如果您尚未创建#Temp1表,请使用以下代码。 It will automatically create the #temp1 table according to the selected fields
它将根据所选字段自动创建#temp1表
;With CTE as (
Select * from #Temp
)
Select *
Into #Temp1
From (
select * from CTE
) t
Besides syntax, you can simplify above SQL code as follows 除了语法,您还可以按如下方式简化上述SQL代码
;With CTE as (
Select * from #Temp
)
Insert Into #Temp1
Select *
From CTE
or better 或更好
Insert Into #Temp1
Select * from #Temp
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.