2015-06-16 3 views
0

Я работаю над SSRS 2008. Простым таблицей с одной группой строк (продуктом) и одной группой столбцов (месяц) на пересечении строки и столбца являются данные (количество продаж). Теперь я добавляю общую строку, которая равна сумме (количеству продаж) за каждый месяц. Также я добавляю общий столбец, который равен сумме (количеству продаж) для каждого продукта. На пересечении общей строки/столбца значение представляет собой общую общую сумму количества продаж для всех продуктов и всех месяцев. Теперь я хочу изменить это на общее количество всех продуктов, но за все месяцы, кроме последнего месяца. Например. есть продукт 1, 2, 3 и месяц 1, 2, 3. Я хочу, чтобы общий объем продаж продукта 1,2, 3 и месяца 1,2 в этой ячейке. Как это сделать? Что-то вроде этого рисунка, в правом нижнем углу, должно быть 6 (за февраль и январь).SSRS получить предыдущий итоговый

enter image description here

---------- обновление, добавлен скрипт для создания этого отчета, поэтому, возможно, кто-то может попробовать.

Набор данных:

select 'Jan' as mon, 'p1' as prod, 1 as id 
    union all 
    select 'Feb' as mon, 'p1' as prod, 1 
    union all 
    select 'Mar' as mon, 'p1' as prod, 1 

    union all 
    select 'Jan' as mon, 'p2' as prod, 1 
    union all 
    select 'Feb' as mon, 'p2' as prod, 1 
    union all 
    select 'Mar' as mon, 'p2' as prod, 1 

    union all 
    select 'Jan' as mon, 'p3' as prod, 1 
    union all 
    select 'Feb' as mon, 'p3' as prod, 1 
    union all 
    select 'Mar' as mon, 'p3' as prod, 1 

Определение отчета:

enter image description here

Существует одна группа строк (группа по прод), одна группа столбцов (группа по пн). На самом деле, я могу сделать это в T-SQL, вычисляя итоговые данные без последнего месяца, а затем присоединяюсь к этому базовому набору данных. Но просто интересно, насколько это возможно для SSRS.

+0

добавить вместе соответствующие значения отчета. –

+0

Я не могу представить, как именно. Можете ли вы дать более подробную информацию? – thotwielder

+0

"7: Избегайте вычисленных полей на уровне отчета SSRS Если в отчете есть расчетные поля, тогда их лучше создать на уровне запроса, а не на уровне отчета, поскольку база данных может лучше обрабатывать вычисления. также будет способствовать снижению нагрузки на обработку отчетов на сервере отчетов и простоте обслуживания ». https://www.mssqltips.com/sqlservertip/3659/sql-server-reporting-services-best-practices-for-performance-and-maintenance/ – HEDMON

ответ

0

Используйте выражение IIF в своем выражении, чтобы исключить из последнего набора данных из последнего набора данных (MAX).

=SUM(IIF(Month(Fields!DateField.Value) & "|" & YEAR(Fields!DateField.Value) = 
Month(MAX(Fields!DateField.Value, "Yourdataset")) & "|" & YEAR(MAX(Fields!DateField.Value, "Yourdataset")), 0, Fields!ValueField.Value)) 

Если месяц равен максимальный месяц, это будет 0 в противном случае он будет использовать ValueField.

+0

Пробовал, но получил это. Выражение значения для текстового поля xx имеет вложенный агрегат, определяющий область набора данных. Внутренние агрегаты не могут указывать область набора данных. Я думаю, что это означает, что функция max не может воспринимать набор данных как область видимости. – thotwielder

+0

Это выражение, которое я использовал в соответствии с вашими: = Sum (iif (Fields! Mon.Value = MAX (Fields! Mon.Value, DataSet1), 0, Fields! ID.Value)) – thotwielder

+0

Ошибка означает, что вы 'не разрешено помещать MAX, который указывает набор данных внутри СУММЫ. В качестве обходного пути добавьте ** вычисляемое поле ** в набор данных с выражением '= IIF (Fields! Mon.Value = MAX (Fields! Mon.Value, DataSet1), 0, Fields! ID.Value)) ' Затем SUM это поле в вашей колонке. –

0

Ссылка на текстовые поля, которые вы хотите суммировать по имени, в качестве членов коллекции отчетов.

В вашем примере, например, если нижняя строка вашего tablix (строка итогов) содержит текстовые поля с именами «tbTotal1», «tbTotal2», «tbTotal3» для столбцов месяца, то вы должны установить выражение, подобное этому в последнем текстовом поле суммировать только первые два месяца:

=ReportItems!tbTotal1.Value + ReportItems!tbTotal2.Value 
+0

Таблица не является статической таблицей, она имеет группу столбцов, поэтому количество столбцов (месяцев) неизвестно. Поэтому нельзя использовать ReportItems. Я загрузил определение отчета, надеюсь, что это имеет смысл. – thotwielder

Смежные вопросы