Советы по использованию сводной таблицы в Oracle - PullRequest
3 голосов
/ 13 декабря 2008

Мне нужен отчет, и я должен использовать сводную таблицу для него. Отчет будет группироваться по категориям. Неправильно использовать случай, когда заявление, потому что есть много категорий. Мы можем рассматривать базу данных Northwind как образец, и все категории будут в столбцах и в отчете будут показаны предпочтения клиентов по категориям. Я не знаю другого решения и видел примеры в виде хранимых процедур в Интернете для сервера Sql. Вы знаете решение, кроме случая использования, когда?

Спасибо

Ответы [ 4 ]

5 голосов
/ 14 декабря 2008

Как только вы получите Oracle 11G, появится встроенная функция PIVOT . До этого вы можете использовать выражения CASE (или DECODE). У меня есть статья о том, как автоматизировать это в моем блоге.

0 голосов
/ 07 февраля 2014

Я использую инструменты отчетности для создания отчетов, это помогает поддерживать чистоту представлений и запросов без форматирования. Обычно пользователи просят Excel, а Excel сам по себе является очень хорошим инструментом отчетности. В Excel есть много способов импорта данных, но я предлагаю XML в качестве входных данных, потому что вы можете открыть его как обычную таблицу Excel.

  1. Использование Excel для открытия файла XML с образцами данных
  2. Выберите таблицу и нажмите «Вставить точку»
  3. Добавить форматирование и сохранить этот файл как шаблон

Excel запоминает путь к файлу XML данных, и вам просто нужно заменить данные, чтобы обновить отчет. Есть много других способов, я использую приложение JAVA на веб-сервере для объединения шаблона Excel и вывода SQL. Этот код бесплатный и с открытым исходным кодом, но он не поможет разработчикам, не являющимся JAVA https://github.com/jbaliuka/x4j-analytic Существует много других инструментов для создания «профессиональных» отчетов.

0 голосов
/ 14 декабря 2008

Вы можете использовать Oracle Data Cartridges (http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciwhatis.htm)) для создания сводных таблиц более эффективно, чем в случае / когда, но имейте в виду, что это непросто, и я нашел документацию довольно скудной.

0 голосов
/ 14 декабря 2008

Больно делать перестановки строк / столбцов в SQL. Каждую строку, которую вы хотите превратить в столбец, вы должны явно указать. Поэтому, если у вас много категорий, ваш запрос будет очень длинным, и он будет меняться каждый раз, когда вы добавляете / удаляете / меняете категорию (это, вероятно, метод CASE, который вы упоминаете). Вы можете написать хранимую процедуру для генерации, которая будет генерировать этот запрос для вас (или иным образом создать желаемый набор результатов), но, честно говоря, в этом и заключается безумие (и, вероятно, ужасная производительность).

Возьмите данные в виде строк, как, безусловно, хочет их предоставить SQL, и затем приложение преобразует их в столбцы. Это будет намного проще, чем заставлять SQL делать то, чего он не хочет.

...