Другое

Транспонирование таблицы SQL: какой запрос может в этом помочь

Lorem ipsum dolor

Транспонирование таблицы SQL — это специфическое преобразование таблицы, после которого столбцы становятся строками, а строки столбцами. Для такой манипуляции существуют специальные конструкции запросов, где используются операторы PIVOT и UNPIVOT. Использование этих операторов имеет довольно специфический синтаксис, но с точки зрения эффективности они отлично справляются с возложенной на них задачей.

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

Можно ли транспонировать таблицу SQL другими способами? Да, можно, но это будут сложные самодельные конструкции. Нет смысла заострять на них свое внимание, если для транспонирования присутствуют специальные операторы.

Транспонирование таблицы SQL

Чтобы лучше понять, как происходит транспонирование таблицы SQL, давайте разберем это действие на практике. Представим, что у вас есть некая SQL-таблица вот такого вида:

 

Дормидонт

Платон

Тимати

Аристарх

Красный

3

7

3

5

Зеленый

10

6

5

7

Голубой

4

4

11

3

 

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

 

Красный

Зеленый

Голубой

Дормидонт

3

10

4

Платон

7

6

4

Тимати

3

5

11

Аристарх

5

7

3

Когда вы создаете такую таблицу в SQL, код будет следующий:

CREATE TABLE transTable([color] varchar(5), [Дормидонт] int, [Платон] int, [Тимати] int, [Аристарх] int);

INSERT INTO transTable

    ([color], [Дормидонт], [Платон], [Тимати], [Аристарх])

VALUES

    ('Красный', 3, 7, 3, 5),

    ('Зеленый', 10, 6, 5, 7),

    ('Голубой', 4, 4, 11, 3);

 

Транспонируем нашу SQL-таблицу с помощью специальной конструкции с применением операторов «pivot» и «unpivot». Код будет следующим:

select name, [Красный], [Зеленый], [Голубой]

from

(

  select color, name, value

  from transtable

  unpivot

  (

    value for name in (Дормидонт, Платон, Тимати, Аристарх)

  ) unpiv

) src

pivot

(

  sum(value)

  for color in ([Красный], [Зеленый], [Голубой])

) piv

 

Заключение

Транспонирование таблицы SQL требуется достаточно редко. Транспонирование можно описать как процесс перевода столбцов в строки. Сегодня мы показали простейший, но эффективный способ, как транспонировать SQL-таблицу при помощи специальных операторов «pivot» и «unpivot».

Схожие статьи

Основные ошибки графических дизайнеров и как их не допустить
Другое

Основные ошибки графических дизайнеров и как их не допустить

Секционирование PostgreSQL 12. Его разновидности и инструкция к ним
Другое

Секционирование PostgreSQL 12. Его разновидности и инструкция к ним

Протокол SSH для чайников: что это и как работает простыми словами
Другое

Протокол SSH для чайников: что это и как работает простыми словами

Как написать Lua скрипты и где они используются? Подробный обзор
Другое

Как написать Lua скрипты и где они используются? Подробный обзор