Другое

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

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

Разработка требований к программному обеспечению: книга Карла Вигерса
Другое

Разработка требований к программному обеспечению: книга Карла Вигерса

Лучшие семинары для программистов: какие события IT нужно посетить?
Другое

Лучшие семинары для программистов: какие события IT нужно посетить?

Как подключить JQuery с Google CDN, возможности библиотеки
Другое

Как подключить JQuery с Google CDN, возможности библиотеки

End-to-end или E2E-процесс: что это? Сквозное тестирование
Другое

End-to-end или E2E-процесс: что это? Сквозное тестирование