В основном, что сказал Мар c. Вот пример того, как это должно выглядеть. Хотя часть, которая описана в Marcs Link, состоит в том, как сделать эту динамическую c так же, как для функции PIVOT, значения должны быть определены изначально и не могут быть динамическими c:
CREATE TABLE dbo.Test(
A VARCHAR(10),
B VARCHAR(10),
C VARCHAR(10)
)
INSERT INTO [dbo].[Test]
( [A]
,[B]
,[C]
)
VALUES
(
'A' -- A - VARCHAR
,'B' -- B - VARCHAR
,'C' -- C - VARCHAR
),
(
'A' -- A - VARCHAR
,'B' -- B - VARCHAR
,'C' -- C - VARCHAR
);
SELECT [1], [2], [3], [4], [5], [6], [7], [8], [9]
FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY A) AS Id
FROM (
SELECT A, 'Col' AS X FROM dbo.Test
UNION ALL
SELECT B, 'Col' AS X FROM dbo.Test
UNION ALL
SELECT C, 'Col' AS X FROM dbo.[Test] tes
) AS Q
) AS P
PIVOT (MAX(A) FOR Id IN ([1], [2], [3], [4], [5], [6], [7], [8], [9])) AS Pvt