一尘不染

将动态生成的数据透视表转换为临时表

sql

我已经看过了,所以我知道如何用动态生成的字段集创建数据透视表。我现在的问题是我想将结果放入临时表中。

我知道,为了将结果集从 EXEC 语句放入临时表中,您需要预先定义临时表。对于动态生成的数据透视表,无法事先知道字段。

我想得到这种功能的唯一方法是使用动态SQL创建一个永久表。有没有更好的办法?


阅读 146

收藏
2021-03-10

共1个答案

一尘不染

您可以这样做:

-- add 'loopback' linkedserver 
if exists (select * from master..sysservers where srvname = 'loopback')
    exec sp_dropserver 'loopback'
go
exec sp_addlinkedserver @server = N'loopback',
    @srvproduct = N'',
    @provider = N'SQLOLEDB', 
    @datasrc = @@servername
go

declare @myDynamicSQL varchar(max)
select @myDynamicSQL = 'exec sp_who'
exec('
    select * into #t from openquery(loopback, ''' + @myDynamicSQL + ''');
    select * from #t
    ')

编辑:添加动态sql接受参数以openquery

2021-03-10