CHill60
Попробуйте прочитать это:
Простой способ использования Pivot в SQL-запросе[^]
Кстати, это срочно только для вас, а не для нас, и гораздо проще помочь людям, которые публикуют код, с которым у них возникли проблемы
[РЕДАКТИРОВАТЬ]
Из вашего вопроса не ясно, пытаетесь ли вы перейти от одной строки ко многим или от многих строк к одной строке. Вот почему я попросил посмотреть ваш вопрос, так как это помогло бы мне лучше понять ваш вопрос.
Однако вот несколько простых примеров, которые вы можете использовать, чтобы решить свою проблему...
1. у вас есть таблица со многими строками, и вы хотите получить из нее одну строку.
CREATE TABLE #demo1 ( c varchar(10), f float )
insert into #demo1 (c,f) values
('Col1' ,6.05),('Col2' ,7.15),
('Col3' ,9.5 ),('Col4' ,8.5 ),('Col5' ,6.5)
С помощью шарнирной...
SELECT * FROM
(SELECT c, f FROM #demo1) as s
PIVOT (MAX(f) FOR c IN (Col1,Col2,Col3,Col4,Col5)) AS p
Результаты:
6.05 7.15 9.5 8.5 6.5
2. у вас есть таблица с одной строкой, и вы хотите получить из нее несколько строк.
CREATE TABLE #demo2
(
letter varchar(1),
Col1 float,
Col2 float,
Col3 float,
Col4 float,
Col5 float
)
insert into #demo2 (letter, Col1,Col2,Col3,Col4,Col5) values
('A',6.05, 7.15, 9.5, 8.5, 6.5)
Есть два метода, которые вы можете использовать
грубая сила"
SELECT 'Col1' AS [Column], Col1 FROM #demo2
UNION
SELECT 'Col2' AS [Column], Col2 FROM #demo2
UNION
SELECT 'Col3' AS [Column], Col3 FROM #demo2
UNION
SELECT 'Col4' AS [Column], Col4 FROM #demo2
UNION
SELECT 'Col5' AS [Column], Col5 FROM #demo2
ORDER BY [Column]
или B) преобразование
SELECT c, f FROM
(SELECT Col1,Col2,Col3,Col4,Col5 FROM #demo2 ) s
UNPIVOT
(f FOR c IN (Col1,Col2,Col3,Col4,Col5)) AS upvt
ORDER BY c
Оба дают один и тот же результат
Col1 6.05
Col2 7.15
Col3 9.5
Col4 8.5
Col5 6.5