pivot Oracle | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Есть ли альтернатива функции
pivot в Oracle Написал около 20 отчетов с разворотом по горизонтали, используя эту штуку. Но увы, она не динамическая В in в ней вопреки примерам документации нельзя подсунуть вычисляемый список. Пишу фиксированный, а он со временем может измениться Особой проблемы написать процедуру с execute immidiate нет, но дело в том, что как для вычисления самого списка полей разворота по диагонали, так и для самих вычислений приходится запускать почти один и тот же огромный по размеру скрипт. Производительность падает раза в два. Второй вопрос связан с первым. Многие отчеты таковы, что первой строкой там должна идти итоговая сумма по всем таким горизонтальным колонкам. Добавляется еще проблема динамического rollup по неизвестному заранее списку колонок. Снова падает производительность. Есть решении все это сделать по частям уже на клиенте, но начальство хочет все максимально на Оракл. Кстати, до кучи. Есть ли аналог pivot c## для dataset ![]() |
Re: pivot Oracle | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
www.oracle.com
В XML выводить, указывая спец-клаузу ANY, или даже подзапрос (если список "колонок" шахматки тоже надо ограничивать). Ну или динамика - у Кайта наверняка есть решение для этого - фишка то только в 11 версии появилась, а шахматки и до того были нужны ![]() По rollup - как-то не приходилось средствами СУБД отчёты делать, а в промежуточном слое как правило не проблема свои группировки и подитоги делать... В экселе "сводные таблицы" всё это на раз делают - и саму шахматку из "нормальной плоской таблицы", и подитоги разнообразные. Для шарпа - есть какие-то библиотеки для pivot datatable... Ничего экстра-сложного в самом алгоритме раскидывания нет, можно в фоксе подсмотреть даже ![]() ![]() ------------------ WBR, Igor ![]() |
Re: pivot Oracle | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
В том-то и дело,
что на Фоксе у меня уже лет 20 класс класс cross есть Пробовал переписать на Оракл, работает, но не быстро, как в Фоксе На есть МSDN C# пример кода в linq , но фактически он статический, как у меня сейчас написано и работает. Вопрос не в этом чтобы написать, а в том , чтобы работало быстро, а вид имело красивый Решается совершенно конкретная задача неких отраслевых отчетов, ексел страниц 150 На фоксе эта моя задача отработала на ура лет 6 и сейчас втихаря используют. Что нам продали -любая страница работает минут по 30-40. Я переписал это и работает по полугодичному интервалу данных минуты 3. Но это вписанные заранее статьи по горизонтали, как в примерах Оракл Pivot Как только пишу динамику с execute immidiate , приходится идти по практически похожим курсорам 2 раза ( приходится анализировать не пустые суммы провод, не имеющие отношения к полям по горизонтали) И все, скорость падает раза в 3 и более, то есть уже покупной вариант не так и страшен. Ексел-это тоже клиент, а хотят Оракл по максимум, и уж точно не Фокс. Политика такая. ![]() |
Re: pivot Oracle | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
|
Re: pivot Oracle | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Спасибо, Игорь, посмотрел.
Немного мудрено, буду разбираться, посмотрю скорость ![]() |
© 2000-2025 Fox Club  |