где, чтоб Вы поняли — поле выборки — это или название продукта, поставляемого дилеруХ, или поле 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'ом
из таблицы НазваниеПродукта.
D_T>КАК этого добиться? Кол-во дилеров и наименований продуктов — нестатичные и заранее неизвестные. D_T>oracle 11g.
Это нужно именно в результате запроса получить или можно плоскую таблицу в Excel выгрузить и там поупражняться?
Можно покурить документацию на оператор PIVOT, там, правда, надо явно указывать количество столбцов (в xml не надо), но у тебя все равно надо добивать количество продуктов, так что может подойти.
Здравствуйте, D_Tony, Вы писали:
D_T>Задача. Получить сводную таблицу по данным, имеющимся в первой таблице (результат работы некоего запроса) D_T>и по ВСЕМ данным из таблицы НазваниеПродукта — т.е. надо учесть даже не выданные продукты дилерам.
Выбираешь продукты из НазваниеПродукта. С помощью UNION ALL добавляешь строку "TOTAL". Дальше левым соединением присоединяешь основную таблицу. Дальше PIVOT. Только вот как сделать, чтобы TOTAL всегда в конце был, сходу не соображу.
Re[2]: Pivot таблица с итогами по строкам и столбцам
Здравствуйте, wildwind, Вы писали:
W>Только вот как сделать, чтобы TOTAL всегда в конце был, сходу не соображу.
Колонкой с порядковым номером. Во всех строках order=0. В строке TOTAL order=1.
Re[3]: Pivot таблица с итогами по строкам и столбцам
Здравствуйте, Mihas, Вы писали:
W>>Только вот как сделать, чтобы TOTAL всегда в конце был, сходу не соображу. M>Колонкой с порядковым номером. Во всех строках order=0. В строке TOTAL order=1.
В PIVOT это как будет выглядеть?
Re[2]: Pivot таблица с итогами по строкам и столбцам
Здравствуйте, Dym On, Вы писали:
D_T>>КАК этого добиться? Кол-во дилеров и наименований продуктов — нестатичные и заранее неизвестные. D_T>>oracle 11g. DO>Это нужно именно в результате запроса получить или можно плоскую таблицу в Excel выгрузить и там поупражняться? DO>Можно покурить документацию на оператор PIVOT, там, правда, надо явно указывать количество столбцов (в xml не надо), но у тебя все равно надо добивать количество продуктов, так что может подойти.
эксель не нужен. да и нет его на конечном компе.
pivot запрос я умею и в динамическом sql генерить, чтобы получать нужные колонки методом select * from table.
НО вопрос как все строки ИТОГО получить в своих местах. Правый столбец я получаю. А вот нижнюю строку с итого — никак.
Re[3]: Pivot таблица с итогами по строкам и столбцам
Здравствуйте, Mihas, Вы писали:
M>Здравствуйте, wildwind, Вы писали:
W>>Выбираешь продукты из НазваниеПродукта. С помощью UNION ALL добавляешь строку "TOTAL". W>>Дальше левым соединением присоединяешь основную таблицу. Дальше PIVOT. W>>Только вот как сделать, чтобы TOTAL всегда в конце был, сходу не соображу. M>Колонкой с порядковым номером. Во всех строках order=0. В строке TOTAL order=1.
Да-да — присоединяюсь к предыдущему оратору — как конкретно запрос станет ЦЕЛИКОМ выглядеть?
И да — как получить правый TOTAL на своем крайнем правом месте — это тоже вопрос.
У меня он выходит на первую колонку....