Как объединить столбцы и транспонировать в SQL? - PullRequest
1 голос
/ 06 января 2020

Я работаю с пользовательской СУБД (совместимой со SQL 2011 Standard) и пытаюсь объединить несколько столбцов в один столбец, как это происходит, но я борюсь с синтаксисом:

Текущая таблица :

------------------------------------------
| ID | setting_A | setting_B | setting_C |
------------------------------------------
| 1  |     ON    |    OFF    |  UNKNOWN  |
------------------------------------------

Требуемый вывод запроса:

------------------------------
|  ID  |  Setting  |  Value  |
------------------------------
|  1   |     A     |    ON   |
------------------------------
|  1   |     B     |   OFF   |
------------------------------
|  1   |     C     | UNKNOWN |
------------------------------

Я пробовал различные операторы IF и CASE, но столкнулся со стеной. Любая помощь будет оценена.

1 Ответ

1 голос
/ 06 января 2020

Вы можете отключить с помощью union all:

select id, 'A' setting, setting_A value from mytable
union all select id, 'B', setting_B from mytable
union all select id, 'C', setting_C from mytable

Предполагается, что setting_A, setting_B и setting_C имеют один и тот же тип данных (в противном случае вам потребуется преобразования для выравнивания типов данных перед объединением наборов результатов).

Демонстрация на DB Fiddle :

id | setting | value  
-: | :------ | :------
 1 | A       | ON     
 1 | B       | OFF    
 1 | C       | UNKNOWN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...