有没有办法将动态数据透视查询的结果直接存储到固定表中?因为结果是动态的,我不能通过指定像“create table MyTable as(pivot select statement)”那样的列名和方法来创建表“似乎在SQL服务器上失败(”关键字'AS'附近的语法不正确“)。 我试图格式化下面的SQL来得到一个SELECT - INTO - FROM结构,但是没有这样做。任何帮助显然非常感谢!从动态数据透视结果在SQL Server上创建表
用于枢轴的SQL是(打造感谢这个伟大的网站!):
declare @pivot varchar(max), @sql varchar(max)
create table pivot_columns (pivot_column varchar(100))
insert into pivot_columns
select distinct DateField from MyTable order by 1
select @pivot=coalesce(@pivot+',','')+'['+pivot_column+']'from pivot_columns
set @sql = 'SELECT * FROM (select DateField, RefCode, SumField from MyTable) p
PIVOT
(sum(SumField) FOR DateField IN (' + @pivot + '))
AS pvl'
drop table pivot_columns
exec (@sql)
您是否尝试过印刷'@ sql'而不是/在执行之前?构建的脚本是什么样的? –
嗨安德里, 我有,但也没有得到它的工作。它是: SELECT * FROM(选择的DateField,RefCode,SumField从MyTable的)p PIVOT ( 总和(SumField) FOR的DateField IN ([20110810],[20110815],...,[20110906],[ 20110907])) )作为镜头 – Daan
而枢轴本身运行良好,它显示了我想要什么。我只想将结果存储在表中,以便进一步编辑/连接其他数据透视表结果。 因为这是一个必须在某个时候自动运行的任务,所以我不想先手动创建表,然后使用insert。 – Daan