powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Сводный отчет
5 сообщений из 5, страница 1 из 1
Сводный отчет
    #35861762
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Необходимо построить сводный отчет, в котором:
область столбцов: дата каждой торговой сессии, номер месяца, номер года.
область строк: наименование товара, фабрика
область данных: кол-во сделок, средневзвешенная цена, минимальная и максимальная цена.
Клиент для отчета: MS Excel (на самом деле все равно кто клиент, поскольку идеология построения сводных отчетов в любой системе одинакова. все ниже описанное будет справедливо и для MS Reporting Services, проверял).
Я создал представление, которое выдает все необходимые данные. При отображении данных по кол-ву сделок и ценам системой отчетности (тут MS Excel) автоматически вычисляются подитоги и общие итоги. Но итог по кол-ву товара необходим, а итог по ценам (суммы по всем товарам и фабрикам) не имеет никакого смысла и эти итоги не нужны. Управлять подитогами пожно только из области строк (а это наименования товаров и фабрик, а не кол-во сделок и цены) и когда говоришь системе убрать подитоги, то таким образом подитоги убираются как не только с цен, но и с кол-ва сделок, а так не нужно.
Необходимо правильно настроить подитоги, в этом и заключается вся проблема.

Мой дальнейший ход мысли:
Выход напрашивается тогда такой: переместить цены и кол-во в область строк. Но для корректной работы отчета придется тогда координально перестраивать весь запрос. Раньше поля представления были:
год торговой сессии
месяц торговой сессии
дата торговой сессии
наименование фабрики
наименование товара
кол-во сделок
средневзвешенная цена товара (по всем сделкам)
минимальная цена
максимальная цена

Теперь необходимо новое представление:
год торговой сессии
месяц торговой сессии
дата торговой сессии
наименование фабрики
наименование товара
наименование атрибута
значение атрибута

где атрибут это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT     'кол-во сделок' AS Name,  1  AS id
UNION
SELECT     'средневзвешенная цена' AS Name,  2  AS id
UNION
SELECT     'минимальная цена' AS Name,  3  AS id
UNION
SELECT     TOP ( 100 ) PERCENT 'максимальная цена' AS Name,  4  AS id
ORDER BY id

Тогда и для каждого значения атрибута придется строить запросы, а это куча UNION-ов, например:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT     _Date, Factory, SECCODE, COUNT(id_Trader) AS Attr,  1  AS id
FROM         dbo.Trades
GROUP BY _Date, Factory, SECCODE
UNION 
SELECT     _Date, Factory, SECCODE, MAX(Price) AS Attr,  3  AS id
FROM         dbo.Trades
GROUP BY _Date, Factory, SECCODE

эти два подзапроса соединяются иннер-джойнами, ну и так далее...
В результате задача решается, но получается огромный и медленный запрос с кучей объединений.
Уверен что такой подход является плохой практикой построения отчета, задача имеет гораздо более лаконичное и красивое решение, но какое? Может быть необходим OLAP-куб с измерениями?
...
Рейтинг: 0 / 0
Сводный отчет
    #35862186
buven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно я один такой, но я так и не понял, в какой системе Вы все таки строите отчет?
...
Рейтинг: 0 / 0
Сводный отчет
    #35862204
rsolanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buvenВозможно я один такой, но я так и не понял, в какой системе Вы все таки строите отчет?
Отчет делал в MS Excel 2007.
...
Рейтинг: 0 / 0
Сводный отчет
    #35862231
buven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению именно с эекселем не смогу Вам помочь.
Но раз уж в старте топика было упомниание об RS, вариант с создания отчета в RS с последующим экспортом в эксель Вы не рассматривали?
ИМХО функционал гораздо шире и скорее всего подобных проблем тут не возникнет.
...
Рейтинг: 0 / 0
Сводный отчет
    #35864632
c0smic_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если используется Microsoft SQL Server 2005 (или выше), то можно использовать CROSS JOIN для первичной агрегации, либо конечного вывода результата.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Сводный отчет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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