У меня есть таблица следующим образом:Pivot в SQL для нескольких столбцов
Использование pivot
мне нужен следующий вывод:
Запрос не должен использовать Union
набор оператора ,
У меня есть таблица следующим образом:Pivot в SQL для нескольких столбцов
Использование pivot
мне нужен следующий вывод:
Запрос не должен использовать Union
набор оператора ,
Вы можете сначала сделать UNPIVOT
, чтобы включить данные в следующем формате:
, а затем сделать PIVOT
по Type
колонки:
Это полный рабочий пример:
DECLARE @DataSource TABLE
(
[CatDes] CHAR(1)
,[val1] TINYINT
,[val2] TINYINT
);
INSERT INTO @DataSource ([CatDes], [val1], [val2])
VALUES ('a', 1 ,2)
,('b', 3 ,4)
,('c', 5 ,6)
,('d', 7 ,8);
SELECT *
FROM @DataSource
UNPIVOT
(
[Value] FOR [Type] IN ([val1], [val2])
) UNPVT
PIVOT
(
MAX([Value]) FOR [CatDes] IN ([a], [b], [c], [d])
) PVT
Конечно, когда вы используете PIVOT
и UNPIVOT
, вы должны жестко закодировать значения столбца. Я думаю, в вашем реальном случае это не вариант, поэтому я рекомендую вам использовать динамический оператор T-SQL
- построить инструкцию в виде строки, а затем выполнить ее с помощью sp_executesql
.
Возможный дубликат: http://stackoverflow.com/questions/20111418/sql-server-transpose-rows-to-columns Вы ищете Transpose from Rows -> Columns. –
Я сделал это с помощью pivot для отдельных val1 и val2 и объединил результаты для окончательного вывода. Я проверил вышеуказанную ссылку «Evaldas Buinauskas», но мне нужно, чтобы имя моего столбца было в строках .. т.е. val1 и val2 в строках. –