Преобразование нескольких столбцов в таблице в набор результатов имя, строки пары значений в SQL Server - PullRequest
1 голос
/ 09 июля 2010

У меня есть такая таблица

Таблица1

Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8
1    2    3    4    5    6    7    8
2    2    3    4    5    16   17   18
3    2    3    4    5    26   27   28
4    2    3    4    5    36   37   38

Я хочу преобразовать данные в этом формате

Col1   DerivedCol1  DerivedCol2
1      Col6         6
1      Col7         7
1      Col8         8
2      Col6         16
2      Col7         17
2      Col8         18
3      Col6         26
3      Col7         27
3      Col8         28
4      Col6         36
4      Col7         37
4      Col8         38

Редактировать : Еще один важный аспект в вопросе заключается в том, что я не знаю, сколько столбцов я выберу, чтобы сделать их парами «Имя», «Значение» и которые могут измениться во время выполнения.

Ответы [ 3 ]

2 голосов
/ 09 июля 2010

Вы можете построить что-то вроде следующего в Dynamic SQL

WITH pvt (Col1 , Col2 , Col3 , Col4 , Col5 , Col6 , Col7 , Col8 )
AS
(

SELECT 1,2,3,4,5,6,7,8 UNION ALL
SELECT 2,2,3,4,5,16,17,18 UNION ALL
SELECT 3,2,3,4,5,26,27,28 UNION ALL
SELECT 4,2,3,4,5,36,37,38
)

SELECT Col1, DerivedCol1 ,DerivedCol2
FROM  pvt
UNPIVOT
   (DerivedCol2  FOR DerivedCol1   IN 
      (Col6 , Col7, Col8  )
)AS unpvt;

Возвращает

Col1        DerivedCol1   DerivedCol2

1           Col6               6
1           Col7               7
1           Col8               8
2           Col6               16
2           Col7               17
2           Col8               18
3           Col6               26
3           Col7               27
3           Col8               28
4           Col6               36
4           Col7               37
4           Col8               38
2 голосов
/ 09 июля 2010
Select Col1, 'Col6', Col6
From Table
Union All
Select Col1, 'Col7', Col7
From Table
Union All
Select Col1, 'Col8', Col8
From Table

Нет никакого динамического способа сделать это, кроме как построить оператор SQL в коде.

1 голос
/ 09 июля 2010

Я бы посмотрел, как разворачивается / разворачивается здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...