SQL 服务器:如何从枢轴 table 创建 table?

SQL Server: how to create a table from a pivot table?

我有一个这样的table,

我用代码将其转换为以下内容,

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

如何从枢轴 table pv 创建一个新的 table?我已经尝试 select * 进入 newTable,但它似乎不起作用。

试试这个:

确保 select 中的列与新 table 中的列相同。

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

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

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

您可以使用 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

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

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

PS:我假设您有权创建 table。