我有一个动态查询,如下所示。 @ColumnNames
param有多个此枢轴正在使用的列。 @ID
和@Apartment_ID
来自插入参数。
SET @DynamicSQL = 'select id, name, address, phone, remarks, ' + **@ColumnNames** + '
from (select b.id, name, criteria_id, impact_value, remarks
from dbo.User u
inner join dbo.ID b on b.id = u.id
where b.Instance_ID = '+ **@Id** +
'and ownerID in (select * from fnSplitString(''' + **@Apartment_ID** + + ''',' + ''',''' + '))'
+ ') as t
pivot (max(impact_value) for criteria_id in (' + **@ColumnNames**+')
) pivoted '
Exec sp_executesql @DynamicSQL
将获得结果,如屏幕截图所示。从@ColumnNames
得到的列(91,92,...)不固定:
我想将此动态结果集插入到临时表中以进行排序功能。
Declare @SQLstrs nvarchar(max)
IF OBJECT_ID('tempdb..#tempResult') IS NOT NULL
DROP TABLE #tempResult
CREATE TABLE #tempResult
(
id int,
name nvarchar(max),
address nvarchar(max),
phone nvarchar(max),
Remarks nvarchar(max),
**@ColumnNames**
)
--EXEC (@Alter_sql);
SET @SQLstrs = 'Insert into #tempResult ' + @DynamicSQL
EXEC @SQLstrs
由于临时表需要包含固定列,如何设置无法知道要插入多少列的动态列?
答案 0 :(得分:1)
尝试使用select into
SET @SQLstrs = 'select * into #tempResult from(' + @DynamicSQL +') as _temp'