#reporting-services
#службы отчетов
Вопрос:
предположим, у меня есть следующий отчет:
Code, Year, Jan, Febr, March.... December, Total
ABC 2011 13 883 2828 .... 3000
ABC 2012 20 888 ....
XYZ 2011 ....
XYZ 2012 ....
Мне нужно вставить «дельта-строку» каждые 2 строки (2 года) для каждого кода, чтобы иметь мой отчет
Code, Year, Jan, Febr, March.... December, Total
ABC 2011 13 883 2828 .... 3000
ABC 2012 20 888 ....
Delta 7 5 ....
XYZ 2011 ....
XYZ 2012 ....
Delta ....
Как это сделать с помощью служб отчетов Sql Server?
Спасибо
Ответ №1:
Один из способов получить это:
- Вставьте вторую строку в самую внутреннюю группу строк, возможно, в группу сведений.
- Сделайте видимость этой строки скрытой
=IIF(Previous(Fields!Code.Value,"RowGroupNameGoesHere") = Fields!Code.Value , false, true )
[Я знаю, излишне, чтобы IIF возвращал значение true или false, но это упрощает устранение неполадок и делает их более гибкими.] - Используйте предыдущую функцию в ячейках этой строки, чтобы получить разницу между этим и предыдущим элементом, что-то вроде
=SUM(Fields.QuantitySold.Value) - Previous(Sum(Fields!QuantitySold.Value),"RowGroupNameGoesHere")
[Я предполагаю, что вы выполняете поворот с помощью табликса и что в вашем наборе данных нет разных столбцов для каждого месяца. Если это произойдет, то сработает тот же подход, но в формуле на шаге 3 используются соответствующие имена полей без суммы.
Это сгенерирует строку различий для каждой строки в отчете, но затем скроет те, которые находятся между совпадающими элементами.
Комментарии:
1. Ваш ответ правильный, но у меня другая проблема: как, если у меня не будет каждый раз строки за 2 года (для каждой группы)? Если я использую предыдущую, я получил неправильные данные…
2. Настройте свою формулу видимости, чтобы скрыть эти строки, или измените математику, чтобы обрабатывать эти значения по-другому (Поля!Код. Значение»RowGroupNameGoesHere») = 2 должно дать вам старт.