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。
我有一个这样的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。