Новость из категории: Информация

Логическая обработка запросов: предложение FROM и UNPIVOT

Содержание:
1. Введение (Вы читаете данный раздел);
2. 1-U1, 1-U2, 1-U3;
3. Альтернативное решение с использованием APPLY;
4. Сочетание операторов.
Логическая обработка запросов: предложение FROM и UNPIVOT

В этой статье мы продолжим тему логической обработки запросов. В предыдущих материалах серии были рассмотрены табличные операторы JOIN, APPLY и PIVOT предложения FROM. На этот раз речь пойдет о четвертом и последнем табличном операторе предложения FROM — UNPIVOT.

В качестве тестовых данных будет использоваться та же база данных, TSQLV4, которая применялась в предыдущих статьях. Если она еще не установлена, вы можете загрузить программный код для ее создания и заполнения данными по адресу: http://tsql.solidq.com/SampleDatabases/TSQLV4.zip. Убедитесь, что установлен контекст для этой базы данных, прежде чем запускать примеры программного кода из статьи:
USE TSQLV4;

Наряду с описанием особенностей логической обработки оператора U N PIVOT я расскажу об альтернативе обратному транспонированию с использованием оператора APPLY. Кроме того, я приведу пример сочетания операторов UNPIVOT и PIVOT и поясню, как можно динамически выполнять обратное транспонирование данных.

Обратное транспонирование данных

Логическая обработка запросов: предложение FROM и UNPIVOT
Содержимое таблицы Sales.MyPivotedOrders

При транспонировании данных происходит преобразование данных из строк в столбцы, а обратное транспонирование заключается в преобразовании данных из столбцов в строки. В качестве примера выполним программный код, чтобы построить таблицу с именем MyPivotedOrders и заполнить ее тестовыми данными (см. код ниже). Содержимое MyPivotedOrders показано в таблице выше.

Логическая обработка запросов: предложение FROM и UNPIVOT
Построение таблицы MyPivotedOrders и заполнение ее данными

В ходе операции обратного транспонирования обрабатывается любое число исходных столбцов, превышающее единицу. Они преобразуются в два целевых столбца, в одном из которых содержатся значения исходного столбца (values column), в другом — имена исходных столбцов (names column).

В данном примере источник содержит строку для каждого сотрудника и столбец для года заказа, и в каждом пересечении столбца и строки хранятся итоговые значения заказа для текущего сотрудника и года. Работать с данными в их текущем состоянии неудобно, стоит преобразовать их в отдельные строки для каждого сотрудника и года. В таблице ниже показан желаемый результат.

Логическая обработка запросов: предложение FROM и UNPIVOT
Результат задачи обратного транспонирования

Аналогично оператору PIVOT, T-SQL поддерживает оператор, именуемый UNPIVOT, который также используется в предложении FROM. Как и PIVOT, оператор UNPIVOT выполняет последовательность логических шагов. Я обозначаю шаги формулой 1-UN, где 1 отражает то обстоятельство, что предложение FROM представляет собой первое важное предложение, обрабатываемое логически, U — сокращение от UN PIVOT, а N — номер шага в операторе UN PIVOT. Оператор UNPIVOT применяет три логических шага:
• 1-U1. Создание копий.
• 1-U2. Извлечение элемента.
• 1-U3. Удаление значений NULL. В следующих разделах показано применение этих шагов для нашей тестовой задачи.


Изучите работу логики обработки запросов в SQL Server как-нибудь в другой раз, потому что сегодняшний день планируете целиком и полностью посвятить игровым автоматам? В этому случае, вас наверняка заинтересует сайт http://vulkanfreeplay.com/official (http://vulkanfreeplay.com/official/). Здесь вы сможете поиграть в сертифицированные слоты, щедрость которых просто поразит ваше воображение!

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Перевести статью:

Похожие новости

Комментарии

Информация

^ Наверх