SQL Server:如何从透视表创建表?

SQL Server:如何从透视表创建表?,sql,sql-server,pivot,pivot-table,Sql,Sql Server,Pivot,Pivot Table,我有一张这样的桌子 我用代码把它旋转到下面 select * from ( select * from table1 ) a pivot ( avg(col3) for col2 in ([a],[b],[c],[d]) ) as pv; 如何从透视表pv创建新表?我已尝试将select*转换为新表,但似乎不起作用。尝试以下操作: 确保select中的列与新表中的列相等 INSERT INTO NewTable select * from ( select *

我有一张这样的桌子

我用代码把它旋转到下面

select * 
from 
(
  select  *
  from table1
) a
pivot 
(
avg(col3)
 for col2 in ([a],[b],[c],[d])
) as pv;
如何从透视表pv创建新表?我已尝试将select*转换为新表,但似乎不起作用。

尝试以下操作:

确保select中的列与新表中的列相等

INSERT INTO NewTable
select * 
from 
(
  select  *
  from table1
) a
pivot 
(
avg(col3)
 for col2 in ([a],[b],[c],[d])
) as pv;
如果您不需要实际的表,您希望在整个查询过程中访问此数据,那么您可以使用临时表TENTBL,然后从TENTBL访问数据


您可以使用INTO动态创建它

使用Chanukya提供的模式。为我工作


最简单的方法是使用您最初猜测的into子句。由于您没有共享代码,我们不知道您可能做错了什么。只需将tableName添加到您自己的数据透视代码中:

select * into myPivotedTable 
from 
(
  select  *
  from table1
) a
pivot 
(
avg(col3)
 for col2 in ([a],[b],[c],[d])
) as pv;

PS:我假设您有创建表的权限

尝试动态SQL尽管简单而正确的答案是像最初尝试的那样使用到newTable中,但您必须拥有这样做的权限+一旦有了表,您需要考虑下一次要做什么。放弃并重新创建?截断并插入?还是把它当作一张静止的桌子?这些都取决于您的需要,您可能希望使用临时表。这是否意味着我必须先创建一个新表,然后才能执行此操作@吉宾Balachandran@Wilheim是的,您必须创建具有相同列数和数据类型的表。如果您只想在整个查询过程中访问结果集,可以使用temp table。类似于插入到TENTBL中,可以查询TENTBL。
SELECT * INTO #TAB
FROM 
(
  SELECT  *
  FROM TABLE1
) A
PIVOT 
(
AVG(COL3)
 FOR COL2 IN ([A],[B],[C],[D])
) AS PV;
CREATE TABLE #D
(
COL1 INT,
COL2 VARCHAR(10),
COL3 INT
)
INSERT INTO #D VALUES
(1,'A',11),
(2,'B',22),
(3,'C',33),
(4,'D',44)

SELECT * INTO #PIVOT_RESULT
FROM (
SELECT COL1, COL2, COL3 FROM #D
)AS A
PIVOT 
(
AVG(COL3)
FOR COL2 IN ([A],[B],[C],[D])
) AS PV;


SELECT * FROM #PIVOT_RESULT
select * into myPivotedTable 
from 
(
  select  *
  from table1
) a
pivot 
(
avg(col3)
 for col2 in ([a],[b],[c],[d])
) as pv;