SQL Server: как создать таблицу из сводной таблицы?
3 ответа
Решение
Вы можете создать его на лету с INTO
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
Самый простой способ сделать это - использовать предложение "в", как вы уже догадались. Поскольку вы не передавали свой код, мы не знаем, что вы могли сделать неправильно. Просто добавьте "into tableName" в свой собственный код поворота:
select * into myPivotedTable
from
(
select *
from table1
) a
pivot
(
avg(col3)
for col2 in ([a],[b],[c],[d])
) as pv;
PS: я полагаю, у вас есть разрешение на создание таблицы.
Попробуй это:
Убедитесь, что выбранные вами столбцы равны столбцам в новой таблице.
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;