将值存储在 temp table 中
Storing the values inside temp table
如何将以下查询的结果放入临时 table?
下面的查询给了我一些结果集。我需要将结果集存储在 temp table 中,以便我可以使用该 temp table
执行一些连接
Declare @cols nvarchar(max),@query nvarchar(max)
select @cols =
stuff( ( select ',[' + Ltrim(rtrim(costelement)) +']' from WECCostElementsCalculation FOR XML PATH('')),1,1,'');
select @query=
'with T as
(select wch.WECCostElementHeaderID,wceyb.WECCostElementsBreakUpID ,wch.WECCostID,WCEYB.ServiceTypeID,WCEYB.WarrantyCoverageID,wecec.CostElement,weceb.Cost
from WECCostElementsHeader WCH inner join WECCostElementsYearBreakUp WCEYB on WCH.WECCostElementHeaderID
=WCEYB.WECCostElementHeaderID INNER JOIN WECCostElementsBreakUp wecEB on wecEB.WECCostElementsBreakUpID=WCEYB.WECCostElementsBreakUpID
left join WECCostElementsCalculation wecec on wecEB.WECCostElementID = wecec.WECCostElementID
)
select * from T
PIVOT
(SUM(Cost) FOR CostElement IN ('+@cols+')) as pvt'
exec sp_executesql @query
您首先需要创建 table 来存储存储过程返回的数据。确保 table 具有与存储过程的结果集完全相同的列。
CREATE TABLE #TempTable (WECCostElementHeaderID int, etc. ... )
现在,要将数据插入 table,您需要做的就是:
INSERT INTO #TempTable
exec sp_executesql @query
仅供快速测试:
create table #TempTable (id int)
declare @query nvarchar(100)
set @query = 'select 1 as id union select 2'
insert into #TempTable
exec sp_executesql @query
select *
from #TempTable
您必须创建一个临时 table 并简单地将 Insert INTO #Temporary_Table(Col1,Col2,....)
放在 exec sp_executesql @query
语句之前。
如下所示:-
DECLARE @cols NVARCHAR(max)
,@query NVARCHAR(max)
SELECT @cols = stuff((
SELECT ',[' + Ltrim(rtrim(costelement)) + ']'
FROM WECCostElementsCalculation
FOR XML PATH('')
), 1, 1, '');
CREATE TABLE #Temporary_table(Col1 datatype,Col2 datatype,Col3.....)
SELECT @query = 'with T as
(select wch.WECCostElementHeaderID,wceyb.WECCostElementsBreakUpID ,wch.WECCostID,WCEYB.ServiceTypeID,WCEYB.WarrantyCoverageID,wecec.CostElement,weceb.Cost
from WECCostElementsHeader WCH inner join WECCostElementsYearBreakUp WCEYB on WCH.WECCostElementHeaderID
=WCEYB.WECCostElementHeaderID INNER JOIN WECCostElementsBreakUp wecEB on wecEB.WECCostElementsBreakUpID=WCEYB.WECCostElementsBreakUpID
left join WECCostElementsCalculation wecec on wecEB.WECCostElementID = wecec.WECCostElementID
)
select * from T
PIVOT
(SUM(Cost) FOR CostElement IN (' + @cols + ')) as pvt'
INSERT INTO #Temporary_table(Col1,Col2,Col3.....)
EXEC sp_executesql @query
SELECT * FROM #Temporary_table
使用 SELECT INTO:
select *
into ##temp
from T
PIVOT
然后在exec sp_executesql @query
之后
SELECT * FROM ##temp
在使用临时 table 的情况下,您应该在主查询或其动态部分的顶部添加:
IF OBJECT_ID(N'##temp') IS NOT NULL DROP TABLE ##temp;
如何将以下查询的结果放入临时 table?
下面的查询给了我一些结果集。我需要将结果集存储在 temp table 中,以便我可以使用该 temp table
执行一些连接Declare @cols nvarchar(max),@query nvarchar(max)
select @cols =
stuff( ( select ',[' + Ltrim(rtrim(costelement)) +']' from WECCostElementsCalculation FOR XML PATH('')),1,1,'');
select @query=
'with T as
(select wch.WECCostElementHeaderID,wceyb.WECCostElementsBreakUpID ,wch.WECCostID,WCEYB.ServiceTypeID,WCEYB.WarrantyCoverageID,wecec.CostElement,weceb.Cost
from WECCostElementsHeader WCH inner join WECCostElementsYearBreakUp WCEYB on WCH.WECCostElementHeaderID
=WCEYB.WECCostElementHeaderID INNER JOIN WECCostElementsBreakUp wecEB on wecEB.WECCostElementsBreakUpID=WCEYB.WECCostElementsBreakUpID
left join WECCostElementsCalculation wecec on wecEB.WECCostElementID = wecec.WECCostElementID
)
select * from T
PIVOT
(SUM(Cost) FOR CostElement IN ('+@cols+')) as pvt'
exec sp_executesql @query
您首先需要创建 table 来存储存储过程返回的数据。确保 table 具有与存储过程的结果集完全相同的列。
CREATE TABLE #TempTable (WECCostElementHeaderID int, etc. ... )
现在,要将数据插入 table,您需要做的就是:
INSERT INTO #TempTable
exec sp_executesql @query
仅供快速测试:
create table #TempTable (id int)
declare @query nvarchar(100)
set @query = 'select 1 as id union select 2'
insert into #TempTable
exec sp_executesql @query
select *
from #TempTable
您必须创建一个临时 table 并简单地将 Insert INTO #Temporary_Table(Col1,Col2,....)
放在 exec sp_executesql @query
语句之前。
如下所示:-
DECLARE @cols NVARCHAR(max)
,@query NVARCHAR(max)
SELECT @cols = stuff((
SELECT ',[' + Ltrim(rtrim(costelement)) + ']'
FROM WECCostElementsCalculation
FOR XML PATH('')
), 1, 1, '');
CREATE TABLE #Temporary_table(Col1 datatype,Col2 datatype,Col3.....)
SELECT @query = 'with T as
(select wch.WECCostElementHeaderID,wceyb.WECCostElementsBreakUpID ,wch.WECCostID,WCEYB.ServiceTypeID,WCEYB.WarrantyCoverageID,wecec.CostElement,weceb.Cost
from WECCostElementsHeader WCH inner join WECCostElementsYearBreakUp WCEYB on WCH.WECCostElementHeaderID
=WCEYB.WECCostElementHeaderID INNER JOIN WECCostElementsBreakUp wecEB on wecEB.WECCostElementsBreakUpID=WCEYB.WECCostElementsBreakUpID
left join WECCostElementsCalculation wecec on wecEB.WECCostElementID = wecec.WECCostElementID
)
select * from T
PIVOT
(SUM(Cost) FOR CostElement IN (' + @cols + ')) as pvt'
INSERT INTO #Temporary_table(Col1,Col2,Col3.....)
EXEC sp_executesql @query
SELECT * FROM #Temporary_table
使用 SELECT INTO:
select *
into ##temp
from T
PIVOT
然后在exec sp_executesql @query
SELECT * FROM ##temp
在使用临时 table 的情况下,您应该在主查询或其动态部分的顶部添加:
IF OBJECT_ID(N'##temp') IS NOT NULL DROP TABLE ##temp;