SQL: преобразование столбцов в строки

#sql

#sql

Вопрос:

В настоящее время у меня есть таблица, которая выглядит следующим образом:

 date ---- x ---- y ---- z
2020----- 2 ---- 4 ---- 8
2018 ---- 3 ---- 3 ---- 2
2019 ---- 1 ---- 6 ---- 0
  

Мне нравится поворачивать эту таблицу, что означает, что столбцы становятся строками, подобными этому:

 date ---- metric ---- value
2020 ----    x   ----  2
2018 ----    x   ----  3
2019 ----    x   ----  1
2020 ----    y   ----  4
2018 ----    y   ----  3
2019 ----    y   ----  6
2020 ----    z   ----  8
2018 ----    z   ----  2
2019 ----    z   ----  0
  

Если бы это было на python, я мог бы сделать это с помощью функции pivote() или t() . Однако я не уверен, как это сделать с помощью SQL. Не могли бы вы, пожалуйста, помочь мне с этим?

Спасибо!

Комментарии:

1. Пометьте свой вопрос базой данных, которую вы используете.

Ответ №1:

Канонический метод union all :

 select date, 'x' as metric, x as value from t union all
select date, 'y' as metric, y as value from t union all
select date, 'z' as metric, z as value from t;
  

Некоторые базы данных поддерживают боковые соединения, что упрощает это — и немного быстрее.