Pivot таблица с итогами по строкам и столбцам
От: D_Tony  
Дата: 19.04.16 12:08
Оценка:
Привет!

Есть — как результат запроса таблица вида:

Имя дилера Поле выборки Кол-во выборки
Дилер1 Продукт1 3
Дилер1 TOTAL 3
Дилер2 Продукт3 2
Дилер2 Продукт4 5
Дилер2 TOTAL 7
Дилер3 Продукт3 1
Дилер3 Продукт8 1
Дилер3 TOTAL 2
где, чтоб Вы поняли — поле выборки — это или название продукта, поставляемого дилеруХ, или поле TOTAL,
описывающее промежуточный подитог по этому дилеру. Т.е. сколько он всего продуктов получил.
Поле "Имя дилера" по всей таблице гарантированно содержит список всех дилеров.
Т.е. даже если ничего поставлено не было — то мы будем иметь это:
ДилерУ TOTAL 0
А вот поле выборки в случае, если оно представляет собой название продукта, поставляемого дилеруХ, то
оно не содержит обязательно ВСЕ названия всех продуктов. Из таблицы выше собственно это видно.
Продукт2, Продукт5, Продукт6, Продукт7 — их нет. Всего продуктов — 8 наименований, к примеру.

Задача. Получить сводную таблицу по данным, имеющимся в первой таблице (результат работы некоего запроса)
и по ВСЕМ данным из таблицы НазваниеПродукта — т.е. надо учесть даже не выданные продукты дилерам.

Требуемый итоговый пример вот:

Имя дилера Продукт1 Продукт2 Продукт3 Продукт4 Продукт5 Продукт6 Продукт7 Продукт8 TOTAL
Дилер1 3 0 0 0 0 0 0 0 3
Дилер2 0 0 2 5 0 0 0 0 7
Дилер3 0 0 1 0 0 0 0 1 2
Итого 3 0 3 5 0 0 0 1 12
КАК этого добиться? Кол-во дилеров и наименований продуктов — нестатичные и заранее неизвестные.
Мне только гарантируют, что в запросе №1 в результате точно будут все дилеры, но не все продукты.
Т.е. все оставшиеся наименования продуктов я должен при создании Pivot таблицы донабрать select'ом
из таблицы НазваниеПродукта.

oracle 11g.
Отредактировано 19.04.2016 12:11 D_Tony . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.