Create table on SQL Server from dynamic pivot results -
is there way directly store results of dynamic pivot query fixed table? result dynamic can't create table specifying columnnames , methods "create table mytable (pivot select statement)" seem fail on sql server ("incorrect syntax near keyword 'as'"). have tried format sql below select - - structure failed so. appreciated!
the sql used pivot (build great website!):
declare @pivot varchar(max), @sql varchar(max) create table pivot_columns (pivot_column varchar(100)) insert pivot_columns select distinct datefield mytable order 1 select @pivot=coalesce(@pivot+',','')+'['+pivot_column+']'from pivot_columns set @sql = 'select * (select datefield, refcode, sumfield mytable) p pivot (sum(sumfield) datefield in ( ' + @pivot + ') ) pvl' drop table pivot_columns exec (@sql)
unless not following trying should able add into mynewtable
sql going execute , should new table.
declare @pivot varchar(max), @sql varchar(max) create table pivot_columns (pivot_column varchar(100)) insert pivot_columns select distinct datefield mytable order 1 select @pivot=coalesce(@pivot+',','')+'['+pivot_column+']'from pivot_columns set @sql = 'select * mynewtable (select datefield, refcode, sumfield mytable) p pivot (sum(sumfield) datefield in ( ' + @pivot + ') ) pvl' drop table pivot_columns exec (@sql)
i test creating new table in following script , gives me new table in db use:
create table t ( [month] int, [id] nvarchar(20), [cnt] int ) insert t values (4,'total',214) insert t values (5,'total',23) insert t values (6,'total',23) insert t values (4,'func',47) insert t values (5,'func',5) insert t values (6,'func',5) insert t values (4,'indil',167) insert t values (5,'indil',18) insert t values (6,'indil',18) declare @cols nvarchar(max), @query nvarchar(max); select @cols = stuff((select distinct ',' + quotename(month) t xml path(''), type ).value('.', 'nvarchar(max)') ,1,1,'') set @query = 'select * tabletest ( select month, id, cnt t ) x pivot ( sum(cnt) month in (' + @cols + ') ) p ' execute(@query) drop table t
Comments
Post a Comment