SSRS: получение значений из определенной строки набора данных?

#reporting-services

#службы отчетов

Вопрос:

В моем наборе данных в настоящее время 12 строк данных. Каждый представляет данные за месяц. Я хотел бы иметь разницу в столбце между строками, причем строки должны быть предпоследними, т.Е. Данными за последний месяц и за предыдущий месяц.
Это могло бы быть просто, если бы я работал с tablix, но это не так. Мне нужны эти значения для текстового поля.

У кого-нибудь есть идеи по этому поводу?

Ответ №1:

Я надеюсь, что вы используете SSRS 2008R2:

R2 представил функцию поиска, которая идеально подходит для этого сценария.

 =Lookup( Fields!ProductUID.Value ,Fields!ProductID.Value,Fields!Price.Value,"PriceDataSet")
  

Функция поиска, описанная выше, оценит первый параметр («Поля!ProductUID.Value») в текущем наборе данных, затем найдите соответствующее значение в поле, указанном во втором параметре («Поля!ProductID.Value») в наборе данных, указанном в четвертом параметре. Затем значение третьего параметра вычисляется в этой строке набора данных и возвращается.

Немного запутанный, но очень полезный.

В вашем случае вы можете использовать это в текстовом поле с вычисляемым статическим числом:

 =Lookup(
    Month(DateAdd(DateInterval.Month, -1, GetDate())),
    Fields!MonthID.Value,
    Fields!Name.Value,
    "DataSet1")
  

Это должно вычислить число за прошлый месяц, затем найдите совпадение в DataSet1.

Комментарии:

1. как насчет определения области поиска для группы? Возможно ли это?

2. Как насчет более ранних версий SSRS? Как бы вы добились такой же функциональности? Пользовательский код?

Ответ №2:

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

Предположим, вы хотите отобразить имя состояния CA, напишите выражение как —

 =Lookup(
   "CA" ,
   Fields!StateCode.Value,
   Fields!StateName.Value,
   "ReportData"
)  

Это вернет ‘California’ в текстовое поле

Ответ №3:

Я наткнулся на этот пост, пытаясь решить аналогичную проблему, но со столбцами двойного типа данных. Не уверен, почему, но SSRS не хотел возвращать мою первую строку, используя ПОИСК в сочетании с ROW_NUMBER в SQL (если кто-то может решить это, тем лучше). Вместо этого я использовал сумму (IIF). Надеюсь, это полезно для кого-то еще.

  =Sum(IIF(Fields!RowNum.Value=1,CDBL(Fields!MyNumericColumn.Value),CDBL(0)))
  

Примечание: Если SSRS жалуется на типы данных, просто приведите обе части IIF к желаемому типу данных.