![]() |
|
Модераторы: LSD |
![]()
|
|
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Несмотря на нереляционность, операторы PIVOT и UNPIVOT таки были внесены в стандарт SQL... и вот возникла у меня определённая проблема с примерами использования. И если с PIVOT удалось родить примеры (впрочем, тоже притянутые за уши, те же цели легко достигаются и иными методами - отбор да группировка) его именно рабочего использования, то с UNPIVOT в этом смысле - полный швах.
Пока придумалось лишь два использования. Первое очевидно - формирование набора для пользовательского вывода. Второе, в общем, тоже - импорт табличных данных в EAV-БД. Не подкинете ли ещё несколько примеров использования UNPIVOT - в смысле не конкретных примеров, а именно для чего... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 11 Всего: 161 |
инструкцию unpivot пользовать не доводилось
Анпивотить же анпивотил... Кросджойном с кейсом. Точно задачи не помню, в каких то аналитических отчетах, когда строки нужно было спустить в столбы, а потом сверху пустить аналитическую(ака оконную, ака ранжирующую) функцию или же полученный набор аггрегировать. К примеру, если у нас движуха по двум складам записана строкой (склад_отгрузки,отргружено, склад_премки, принято, утеряно, повреждено), чтобы одним запросом посчитать движуху в разрезе склада - либо юнить, либо анпивотить - не? В ораклиной документации слово unpivot наиболее релевантно для документа "Warehouse Builder Data Modeling, ETL, and Data Quality Guide". В етеэлях, наверное действительно в масть будет анпивот. Особенно для буквы - Т, сиречь трасформация. Добавлено @ 01:01 хотя... для этого случая, наверное - не Ибо в этом случае, при формировании новой строки будет использоваться другой склад для другого поля количества Это сообщение отредактировал(а) Zloxa - 25.6.2013, 01:02 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Да тривиальный кейс уже решает, если нужен баланс по отдельному складу:
А если аналитику по всем складам - почему-то мне кажется, что подзапросы будут быстрее распивота... да и запрос нагляднее. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 11 Всего: 161 |
я имел в видуху движуху по обоим складам. Тогда это тривиальный кейс + кроссджойн с сурогатным набором, т.к. мы должны получить две строки из одной. Ну, либо union all двух подзапросов - в зависимости от контекста. Ну а то, что пивот/анпивот - синтаксический сахар и вполне выражаются и ранее стандартизованными средствами - факт. Факт же и то, что динамически формировать текст запроса с синтаксисом pivot/unpivot несколько проще, нежели используя привычные выразительные средства. Хотя, думаю, в рядли это повлияло на решение о стандартизации. Но коль уж стандартизовано - пусть буедт. Не помешает -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |