Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
29.09.2004, 21:00
|
|||
|---|---|---|---|
|
|||
отчет Discoverer |
|||
|
#18+
Помогите, пожалуйста. Такая проблема. Надо создать отчет на основании данных из двух папок. Эти папки соединены 1:M. Это просто. Но когда я хочу получить итоговую сумму по данным первой папки он их не отображает(по данным второй папки отображает). Если соединить две папки в одну то итоги по данным из первой папки появляются, но неверные, т. к. отображаются несколько записей по одному и тому же договору. Ведь связь 1:M. Что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.09.2004, 19:57
|
|||
|---|---|---|---|
|
|||
отчет Discoverer |
|||
|
#18+
Если я правильно понял Вашу проблему, то у Вас есть 2 таблицы. одна - измерение (например, Договор- CONTRACTS), вторая таблица фактов (например, отгрузка по договорам - SHIPPINGS). Таблица Договор имеет отношение к таблице отгрузка "Один ко Многим". В табл. Договор, например, есть поле Общая сумма договора - TOTAL_CONTRACT_PRICE. Вам необходимо в одном отчете вывести: № договора - CONTRACT_NO, Общая сумма договора - TOTAL_CONTRACT_PRICE, Фактически отгружено по договору SHIPPING_SUM). Если Ваш случай соответствует указанной выше постановке задачи, то представьте, как с помощью 1 SQL запроса получить корректный отчет. При простом соединении таблиц: Select a1.CONTRACT_NO, sum(a1.TOTAL_CONTRACT_PRICE), sum(a2.SHIPPING_SUM) FROM CONTRACTS A1, SHIPPINGS A2 WHERE A1.ID = A2.CONTRACT_ID Group By CONTRACT_NO Это азы SQL: произойдет "задвоение" ("затроение") значения по полю TOTAL_CONTRACT_PRICE – судя по всему именно это у Вас произошло. В этом случае Discoverer выдаст ошибку и не станет выполнять такой некорректный запрос. Как это исправить? В Oracle Discoverer существует несколько способов корректного построения такого отчета. Например: 1. Можно в Модуле Администрирования изменить свойство, указав, что поле TOTAL_CONTRACT_PRICE не является полем типа «Data Point». В этом случае суммирование по данному полю происходить не будет. Т.е. Disocverer сгенирирует SQL содержащий такой запрос: Select a1.CONTRACT_NO COL1, a1.TOTAL_CONTRACT_PRICE COL2, sum(a2SHIPPING_SUM) COL3 FROM CONTRACTS A1, SHIPPINGS A2 WHERE A1.ID = A2.CONTRACT_ID Group By a1.CONTRACT_NO, a1.TOTAL_CONTRACT_PRICE 2. создать вычисляемое поле в отчете, в которое включить Item “ Общая сумма договора" не указывая никаких функций агрегации. 3. В модуле Администрирования создать Custom Folder и включить в него приблизительно следующий запрос: Select col1, col2, col3 from (Select a1.CONTRACT_NO COL1, a1.TOTAL_CONTRACT_PRICE COL2, sum(a2SHIPPING_SUM) COL3 FROM CONTRACTS A1, SHIPPINGS A2 WHERE A1.ID = A2.CONTRACT_ID Group By a1.CONTRACT_NO, a1.TOTAL_CONTRACT_PRICE) И установить свойство Default position – "Data Point" для полей col2, col3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=49&mobile=1&tid=1872208]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
91ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
| others: | 271ms |
| total: | 459ms |

| 0 / 0 |
