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

start [/forum/topic.php?fid=31&msg=36574117&tid=1535541]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 9ms |
| total: | 85ms |

| 0 / 0 |
