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

Логическая обработка запросов: предложение FROM и UNPIVOT | 1-U1, 1-U2, 1-U3

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

1-U1. Создание копий

Первый шаг к обратному транспонированию данных заключается в формировании отдельного экземпляра каждой исходной строки для каждого столбца без транспонирования. Наши столбцы без транспонирования представляют годы заказов: 2014, 2015 и 2016, поэтому на данном шаге формируется копия для каждого года. В таблице ниже показан результат этого шага для нашей тестовой задачи.

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

Логическая обработка запросов: предложение FROM и UNPIVOT | 1-U1, 1-U2, 1-U3
Результат шага 1-U1

1-U2. Извлечение элемента

На втором шаге, по сути, создается столбец значений (в нашем примере ему назначено имя val). Извлекается элемент из исходных столбцов, соответствующих именам, которые представлены текущей копией. В нашем примере извлекается значение из исходного столбца года, который соответствует текущему значению orderyear. Если orderyear — 2014, val возвращает значение из столбца [2014], если orderyear — 2015, val возвращает значение из [2015], а когда orderyear — 2016, val возвращает значение из (2016). В таблице ниже показан желаемый результат этого шага для нашей тестовой задачи.

Логическая обработка запросов: предложение FROM и UNPIVOT | 1-U1, 1-U2, 1-U3
Результат шага 1-U2

1-U3. Удаление значений NULL

Третий и последний шаг обратного транспонирования — удалить строки со значениями NULL в результирующем столбце значений. Обычно хранить эти строки не требуется, поскольку они представляют неприменимые случаи. В нашем примере это случаи, когда сотрудник бездействовал в течение заданного года.

Логическая обработка запросов: предложение FROM и UNPIVOT | 1-U1, 1-U2, 1-U3
Результат задачи обратного транспонирования

Выходные данные этого шага в нашем примере были показаны в таблице выше как желаемый вывод задачи обратного транспонирования.

Оператор UNPIVOT

Как отмечалось, оператор UN PIVOT построен, подобно оператору PIVOT, как шаг в предложении FROM. Его синтаксис требует указать три упомянутых выше элемента, участвующих в задаче обратного транспонирования.
1. Целевое имя столбца, в котором будут храниться значения исходного столбца (в нашем случае val).
2. Целевое имя столбца, в котором будут храниться имена исходного столбца (в нашем случае orderyear).
3. Имена исходных столбцов (в нашем случае [2014], [2015], [2016]).

Вы указываете эти элементы в операторе UN PIVOT с использованием следующего синтаксиса:
SELECT *
FROM <source table>
UNPIVOT( 1 FOR 2 IN (3) ) AS <alias>;

В применении к нашим данным полный запрос с оператором U N PIVOT выглядит следующим образом:
SELECT empid, orderyear, val
FROM Sales.MyPivotedOrders
UNPIVOT( val FOR orderyear IN ([2014],[2015],[2016]) ) AS U;

Логическая обработка запросов: предложение FROM и UNPIVOT | 1-U1, 1-U2, 1-U3
Оператор UNPIVOT

На рисунке выше показано, как элементы, участвующие в операторе UNPIVOT, соответствуют входным и выходным данным оператора. Обратите внимание, что столбец имен (orderyear) вводится как NVARCHAR (128). Если требуется другой тип, например INT, следует выполнить его приведение.

Логическая обработка запросов: предложение FROM и UNPIVOT | 1-U1, 1-U2, 1-U3
Блок-схема логической обработки запроса — предложение FROM

На рисунке выше показана блок-схема, описывающая логическую обработку запроса предложения FROM, со всеми четырьмя табличными операторами, в том числе оператором UNPIVOT.


Вы не IT-специалист, а азартный игрок, поэтому вас совершенно не интересует обработка каких-то там логических запросов. Так что, я рекомендую вам сразу же перейти на http://1.автоматывулкан.com/casino-vulkan/ (http://1.автоматывулкан.com/casino-vulkan/). Здесь вы найдете свои самые любимые игровые автоматы. Приступайте к игре, и, кто знает, возможно именно сегодня вам улыбнется удача!

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

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

Поделиться

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

Комментарии

^ Наверх