Другое

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

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

Android Altamob 1 Origin: что это за приложение, вирус или нет?
Другое

Android Altamob 1 Origin: что это за приложение, вирус или нет?

Новая операционная система от Google. Свежий обзор ОС Fuchsia
Другое

Новая операционная система от Google. Свежий обзор ОС Fuchsia

Вебинары Java: лучшие бесплатные вебинары для вашего обучения
Другое

Вебинары Java: лучшие бесплатные вебинары для вашего обучения

Что такое минорное обновление: как производится и зачем
Другое

Что такое минорное обновление: как производится и зачем

×