Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS 2008 - как постароить группировку в датасете при различной грануляронсти мер. / 6 сообщений из 6, страница 1 из 1
12.04.2010, 10:24
    #36573438
McCar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
Такая проблемка.. нужно построить отчет в 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
12.04.2010, 12:26
    #36573766
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
Ну, сходу вижу несколько вариантов.
Возвращать площадь как площадь / кол-во манагеров.
Ввести дополнительное поле Площадь Магазина, в котором возвращать значение только для "первого" манагера, для остальных null или 0.
Или для группы Магазин считать Max(площадь) а для Регион считать сумму значений в textbox-ах, содержащих Max(площадь) для Магазинов.
Ну, или писать код, который будет это считать. Посмотрите вот в этой пример отчёта Нумерация строк группы
...
Рейтинг: 0 / 0
12.04.2010, 14:09
    #36574108
McCar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
Max Otto fon ShtirlicНу, сходу вижу несколько вариантов.
Возвращать площадь как площадь / кол-во манагеров.
Ввести дополнительное поле Площадь Магазина, в котором возвращать значение только для "первого" манагера, для остальных null или 0.
Или для группы Магазин считать Max(площадь) а для Регион считать сумму значений в textbox-ах, содержащих Max(площадь) для Магазинов.
Ну, или писать код, который будет это считать. Посмотрите вот в этой пример отчёта Нумерация строк группы
Первые два варианта требуют дополнительных извращений в MDX запросе на основе которого строится датасет, а там и так все непросто.
Насчет второго варианта можно поподробнее - на самом деле для уровня Региона мне нужно что то наподобие Sum(Max(Fields.ПлощадьМагаза.Value,"группировкаМанагеры"),"ГруппировкаМагазы").
Но вложенные агрегаты поддерживаются только с SQL Server 2008 R2 November CTP а у нас .. не хотят его ставить. Какие нибудь workaround-ы посоветуете?
...
Рейтинг: 0 / 0
12.04.2010, 14:14
    #36574117
McCar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
Еще вдогонку мысль..
а как нибудь можно определить переменную группировки магазинов - в коде задать ее как первый из значений площади по группировке манагеров, а для группировки регионов делать суммирование этих переменных? Или переменные уровня группы для Parent группы никак не видны?
...
Рейтинг: 0 / 0
12.04.2010, 14:21
    #36574130
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
Ну, посмотрите тему Нумерация строк группы - там используется Previous для определения "начала" группы. Вам надо переделать код так, что бы он возвращал не "count", а "sum"...
...
Рейтинг: 0 / 0
20.04.2010, 15:54
    #36588052
minya13_85
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RS 2008 - как постароить группировку в датасете при различной грануляронсти мер.
А местами поменять поля Сначала будет регион группировка, потом магазин и площадь, а только потом Менеджеры..
РегионМагазинПлощадь МенеджерПродажиМосковский ЦУМ2000Иванов50Сидоров50
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS 2008 - как постароить группировку в датасете при различной грануляронсти мер. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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