Это невозможно с UNPIVOT, вы захотите использовать PIVOT. Документация Microsoft по теме «Использование PIVOT и UNPIVOT»
Но вот пример использования ваших тестовых данных с комментариями:
DECLARE @Custom TABLE
(
[ID] TINYINT IDENTITY
, [value] NVARCHAR(20)
);
INSERT INTO @Custom
VALUES ( 'red' )
, ( 'green' )
, ( 'blue' );
SELECT *
FROM @Custom
PIVOT (
MAX([value]) --column being aggregated, the column values you want horizontal
FOR [ID] IN ( [1], [2], [3] ) --The column that contains the value that will become the column headers.
) AS [pvt];
Предоставление использования результатов
1 2 3
-------------------- -------------------- --------------------
red green blue
Поскольку в заголовках столбцов вы хотите использовать словосочетание «COLOR», мы сопоставим его в подзапросе со столбцом ID и настроим стержень
SELECT *
FROM (
--Since you want 'COLOR' as part of the column name we do a sub-query and concat that verbiage with the ID
SELECT CONCAT('COLOR', [ID]) AS [ColumnColor]
, [value]
FROM @Custom
) AS [Cst]
PIVOT (
MAX([value]) --Same as before, column being aggregated, the column values you want horizontal
FOR [ColumnColor] IN ( [COLOR1], [COLOR2], [COLOR3] ) --This changes now to reflect the concatenated column and the new column header values
) AS [pvt];
. результаты
COLOR1 COLOR2 COLOR3
-------------------- -------------------- --------------------
red green blue