Другое

Транспонирование таблицы 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».

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

Как понять, что пора менять работу, и стоит ли делать это сразу?
Другое

Как понять, что пора менять работу, и стоит ли делать это сразу?

Что такое ошибка 0x80070091: почему возникает, и как исправить
Другое

Что такое ошибка 0x80070091: почему возникает, и как исправить

NPM — руководство для начинающих: что такое npm run build и init
Другое

NPM — руководство для начинающих: что такое npm run build и init

Другое

Свёрточные нейросети: как они работают, где применяются и какие бывают

×