Нечто подобное, вероятно, сделать трюк:
Тестовые данные
CREATE TABLE #tbl
(
Y1 INT,
Y2 INT,
Y3 INT,
Y4 INT,
Y5 INT
)
INSERT INTO #tbl
VALUES
(1,2,3,4,9),
(1,6,9,3,6),
(2,2,6,7,6)
Тогда нам нужно знать, сколько столбцов X там. Это получает столбцы:
DECLARE @nbrOf INT=(SELECT COUNT(*) FROM #tbl)
DECLARE @cols VARCHAR(MAX)
DECLARE @colsWithName VARCHAR(MAX)
;WITH Nbrs (n) AS (
SELECT 1 UNION ALL
SELECT 1 + n FROM Nbrs WHERE n <@nbrOf)
SELECT
@cols = COALESCE(@cols + ','+QUOTENAME(n),
QUOTENAME(n)),
@colsWithName = COALESCE(@colsWithName + ','+QUOTENAME(n)+' AS X'+CAST(n AS VARCHAR(10)),
QUOTENAME(n)+' AS X'+CAST(n AS VARCHAR(10)))
FROM
Nbrs
Затем мы собираемся сделать динамический sql с точкой поворота. Как это:
DECLARE @query NVARCHAR(4000)=
N'SELECT
'[email protected]+'
FROM
(
SELECT
ROW_NUMBER() OVER(ORDER BY tbl.Y1) AS RowNbr,
tbl.Y1,
tbl.Y2,
tbl.Y3,
tbl.Y4,
tbl.Y5
FROM
#tbl AS tbl
) AS p
UNPIVOT
(
Value FOR Name IN
(Y1, Y2, Y3, Y4, Y5)
) AS unpvt
PIVOT
(
MAX(Value)
FOR RowNbr IN('[email protected]+')
) AS pvt'
EXECUTE(@query)
Тогда в моем случае я понизит временную таблицу
DROP TABLE #tbl
Спасибо за быстрый ответ ..... мне не нужно никаких имен столбцов и все ... все Мне нужно просто перенести данные данной таблицы ..... Если это то, что может сделать pivot, вы можете попытаться объяснить мне мою таблицу примеров ... Я новичок в sql – krrish
Переставляя, делайте вы хотите, чтобы вы вращали свой стол? – AFD
Я просто хочу повернуть данные таблицы ... как показано на рисунке i.e, первая строка в исходной таблице - это данные для первого столбца таблицы – krrish