Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сводный отчет

1.8K
27 февраля 2009 года
rSolanov
106 / / 04.05.2005
Здравствуйте!
Необходимо построить сводный отчет, в котором:
область столбцов: дата каждой торговой сессии, номер месяца, номер года.
область строк: наименование товара, фабрика
область данных: кол-во сделок, средневзвешенная цена, минимальная и максимальная цена.
Клиент для отчета: MS Excel (на самом деле все равно кто клиент, поскольку идеология построения сводных отчетов в любой системе одинакова. все ниже описанное будет справедливо и для MS Reporting Services, проверял).
Я создал представление, которое выдает все необходимые данные. При отображении данных по кол-ву сделок и ценам системой отчетности (тут MS Excel) автоматически вычисляются подитоги и общие итоги. Но итог по кол-ву товара необходим, а итог по ценам (суммы по всем товарам и фабрикам) не имеет никакого смысла и эти итоги не нужны. Управлять подитогами пожно только из области строк (а это наименования товаров и фабрик, а не кол-во сделок и цены) и когда говоришь системе убрать подитоги, то таким образом подитоги убираются как не только с цен, но и с кол-ва сделок, а так не нужно.
Необходимо правильно настроить подитоги, в этом и заключается вся проблема.

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

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

где атрибут это:
 
Код:
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-ов, например:
 
Код:
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


эти два подзапроса соединяются иннер-джойнами, ну и так далее...
В результате задача решается, но получается огромный и медленный запрос с кучей объединений.
Уверен что такой подход является плохой практикой построения отчета, задача имеет гораздо более лаконичное и красивое решение, но какое?
1.8K
02 марта 2009 года
rSolanov
106 / / 04.05.2005
Друзья, неужели проектирование сводных отчетов это такая редкая задача?
5
02 марта 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: rSolanov
Друзья, неужели проектирование сводных отчетов это такая редкая задача?


Скорее скучная... я так и не смог прочитать ваш пост полностью :rolleyes: (простите).

1.9K
03 марта 2009 года
GreenRiver
451 / / 20.07.2008
Цитата: rSolanov
Друзья, неужели проектирование сводных отчетов это такая редкая задача?


Сформулируйте по-другому - попроще и используя ER-диаграммы. Попробуем помочь :)

1.8K
05 марта 2009 года
rSolanov
106 / / 04.05.2005
Я тогда пока сам буду разбираться, хоть это и форум, но сильно напрягать Вас мне уж как-то неудобно... Просто возникли некоторые идеи, если сам разберусь, обязательно напишу подробное решение, ведь возможно кому-то еще тоже по этому вопросу нужна помощь
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог