SQL Server 2008 R2 - преобразование столбцов в строки и сохранение всех значений в одном столбце

Мне трудно осмыслить концепции поворота / отмены поворота и надеяться, что кто-то может помочь или дать мне какие-то рекомендации о том, как подойти к моей проблеме.

Вот упрощенный образец таблицы, который у меня есть

+-------+------+------+------+------+------+
| SAUID | COM1 | COM2 | COM3 | COM4 | COM5 |
+-------+------+------+------+------+------+
| 1     | 24   | 22   | 100  | 0    | 45   |
| 2     | 34   | 55   | 789  | 23   | 0    |
| 3     | 33   | 99   | 5552 | 35   | 4675 |
+-------+------+------+------+------+------+

Конечный результат Я ищу результат таблицы, аналогичный приведенному ниже

+-------+-----------+-------+
| SAUID | OCCUPANCY | VALUE |
+-------+-----------+-------+
| 1     | COM1      | 24    |
| 1     | COM2      | 22    |
| 1     | COM3      | 100   |
| 1     | COM4      | 0     |
| 1     | COM5      | 45    |
| 2     | COM1      | 34    |
| 2     | COM2      | 55    |
| 2     | COM3      | 789   |
| 2     | COM4      | 23    |
| 2     | COM5      | 0     |
| 3     | COM1      | 33    |
| 3     | COM2      | 99    |
| 3     | COM3      | 5552  |
| 3     | COM4      | 35    |
| 3     | COM5      | 4675  |
+-------+-----------+-------+

Я осматриваюсь, но в большинстве примеров, похоже, используется поворот, но мне трудно обернуть это вокруг моего случая, поскольку мне нужны все значения в одном столбце.

Я надеюсь поэкспериментировать с жестким кодированием, чтобы добиться сходства с моим примером, но мои фактические столбцы таблицы составляют ~ 100 с различными # SAUID для каждой таблицы и, похоже, для этого потребуется динамический sql?

Спасибо за помощь заранее.


person Will C.    schedule 14.03.2018    source источник


Ответы (1)


Используйте 1_:

SELECT u.SAUID, u.OCCUPANCY, u.VALUE
FROM yourTable t
UNPIVOT
(
    VALUE for OCCUPANCY in (COM1, COM2, COM3, COM4, COM5)
) u;
ORDER BY
    u.SAUID, u.OCCUPANCY;

введите здесь описание изображения

Демо

person Tim Biegeleisen    schedule 14.03.2018