powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
6 сообщений из 6, страница 1 из 1
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
    #36573438
McCar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая проблемка.. нужно построить отчет в Reporting Services 2008.
Есть датасет примерно такого вида –
------------------------------------------
Регион Магазин Торговая площадь Продажи
---------------------------------------------
Московский ЦУМ 2000 100
Московский ГУМ 1000 100
Саратовский Сельпо 500 50
Всего 3500 250
------------------------------------------------
-по нему мы строим отчет с группировкой по региону и магазину, для суммарных строк указывая в значениях Sum(Торговая площадь).
Все корректно и красиво.
Дальше, в иерархию Регион Магазин мы хотим добавить еще уровень ниже – Менеджера.
Датасет приобретает такой вид –
-------------------------------------
Регион Магазин Менеждер Торговая площадь Продажи
--------------------------------------------------
Московский ЦУМ Иванов 2000,00 50
Московский ЦУМ Сидоров 2000,00 50
Московский ГУМ Петров 1000,00 70
Московский ГУМ Лужков 1000,00 30
Саратовский Сельпо Ипатов 500,00 30
Саратовский Сельпо Медведева 500,00 20
Всего 7000,00 250
---------------
То есть на уровне Менеджера колонка "Торговая площадь" означает "торговая площадь магазина в котором работает менеджер.
- добавляем в отчет еще одну группировку для менеджера, и сталкиваемся с такой проблемой –
Так как в каждом магазине несколько менеджеров, сумма по "Торговая площадь" отражается непрвильно, то есть-суммы по продажам отображаются правильно на всех уровнях, потому что эта мера (Продажи) зависит от менеджера, а «Торговая площадь» (и все другие меры которые на основе нее считаются) – работает только на самом нижнем уровне, на всех остальных уровнях она как бы умножается пропорционально количеству менеджеров в магазине . То есть на уровне Всего уже получается не 3500 а 7000 кв.м, и так по всем промежуточным уровням группировки Подскажите идеи – как правильно здесь указать RS нужную логику суммирования ?
...
Рейтинг: 0 / 0
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
    #36573766
Ну, сходу вижу несколько вариантов.
Возвращать площадь как площадь / кол-во манагеров.
Ввести дополнительное поле Площадь Магазина, в котором возвращать значение только для "первого" манагера, для остальных null или 0.
Или для группы Магазин считать Max(площадь) а для Регион считать сумму значений в textbox-ах, содержащих Max(площадь) для Магазинов.
Ну, или писать код, который будет это считать. Посмотрите вот в этой пример отчёта Нумерация строк группы
...
Рейтинг: 0 / 0
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
    #36574108
McCar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max Otto fon ShtirlicНу, сходу вижу несколько вариантов.
Возвращать площадь как площадь / кол-во манагеров.
Ввести дополнительное поле Площадь Магазина, в котором возвращать значение только для "первого" манагера, для остальных null или 0.
Или для группы Магазин считать Max(площадь) а для Регион считать сумму значений в textbox-ах, содержащих Max(площадь) для Магазинов.
Ну, или писать код, который будет это считать. Посмотрите вот в этой пример отчёта Нумерация строк группы
Первые два варианта требуют дополнительных извращений в MDX запросе на основе которого строится датасет, а там и так все непросто.
Насчет второго варианта можно поподробнее - на самом деле для уровня Региона мне нужно что то наподобие Sum(Max(Fields.ПлощадьМагаза.Value,"группировкаМанагеры"),"ГруппировкаМагазы").
Но вложенные агрегаты поддерживаются только с SQL Server 2008 R2 November CTP а у нас .. не хотят его ставить. Какие нибудь workaround-ы посоветуете?
...
Рейтинг: 0 / 0
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
    #36574117
McCar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вдогонку мысль..
а как нибудь можно определить переменную группировки магазинов - в коде задать ее как первый из значений площади по группировке манагеров, а для группировки регионов делать суммирование этих переменных? Или переменные уровня группы для Parent группы никак не видны?
...
Рейтинг: 0 / 0
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
    #36574130
Ну, посмотрите тему Нумерация строк группы - там используется Previous для определения "начала" группы. Вам надо переделать код так, что бы он возвращал не "count", а "sum"...
...
Рейтинг: 0 / 0
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
    #36588052
minya13_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А местами поменять поля Сначала будет регион группировка, потом магазин и площадь, а только потом Менеджеры..
РегионМагазинПлощадь МенеджерПродажиМосковский ЦУМ2000Иванов50Сидоров50
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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