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

时间:2016-12-08 09:46:29

标签: sql sql-server pivot pivot-table

我有一张这样的表,

enter image description here

我已使用代码

将其转到以下内容
select * 
from 
(
  select  *
  from table1
) a
pivot 
(
avg(col3)
 for col2 in ([a],[b],[c],[d])
) as pv;

enter image description here

如何从数据透视表pv创建新表?我已经尝试过select * into newTable,但它似乎不起作用。

3 个答案:

答案 0 :(得分:1)

您可以使用INTO

动态创建它
SELECT * INTO #TAB
FROM 
(
  SELECT  *
  FROM TABLE1
) A
PIVOT 
(
AVG(COL3)
 FOR COL2 IN ([A],[B],[C],[D])
) AS PV;

由Chanukya提供架构。 (为我工作)

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

答案 1 :(得分:0)

试试这个:

确保select中的列等于新表中的列。

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

如果您不想要实际的表,您希望在整个查询过程中访问此数据,那么您可以使用临时表#TempTbl,然后从#TempTbl访问数据。

INSERT INTO #TempTbl
select * 
from 
(
  select  *
  from table1
              ) a
 pivot 
 (
   avg(col3)
   for col2 in ([a],[b],[c],[d])
                                  ) as pv;

答案 2 :(得分:0)

最简单的方法是使用"进入"正如你原先猜到的那样。由于您没有共享您的代码,因此我们不知道您可能做错了什么。只需将"添加到tableName"你自己的转轴代码:

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

PS:我假设你有权创建一个表。