Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / отчет Discoverer / 2 сообщений из 2, страница 1 из 1
29.09.2004, 21:00
    #32717749
Mad_pingvin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчет Discoverer
Помогите, пожалуйста. Такая проблема. Надо создать отчет на основании данных из двух папок. Эти папки соединены 1:M. Это просто. Но когда я хочу получить итоговую сумму по данным первой папки он их не отображает(по данным второй папки отображает). Если соединить две папки в одну то итоги по данным из первой папки появляются, но неверные, т. к. отображаются несколько записей по одному и тому же договору. Ведь связь 1:M. Что делать?
...
Рейтинг: 0 / 0
30.09.2004, 19:57
    #32719156
Aleksm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отчет Discoverer
Если я правильно понял Вашу проблему, то у Вас есть 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.
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / отчет Discoverer / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]