SSRS — Как сделать отступ в строке на основе условия?

#sql #reporting-services #report #indentation #iif

#sql #службы отчетов #Сообщить #отступ #iif

Вопрос:

В SSRS у меня есть отчет, например:

 Designation                Type          Amount

Admin1                     Gift           50
Admin1                     Payment        50
Admin1                     Payment        50
Admin2                     Gift           100       
  

Таким образом, в принципе, Admin1 может получить подарок, например, в размере 50 долларов, и с этого момента любые дополнительные платежи, произведенные в отношении этого же обозначения, будут классифицироваться как платеж, и я бы хотел, чтобы соответствующие платежи, относящиеся к первоначальному подарку, выглядели следующим образом:

 Designation                Type          Amount

Admin1                     Gift           50
     Admin1                Payment        50
     Admin1                Payment        50
Admin2                     Gift           100
  

Моя логика была бы примерно такой: если обозначение одно и то же, и обозначение имеет тип платежа, то они должны быть с отступом под тем же обозначением, где тип — Подарок.

Я никогда раньше не работал с отступами в SSRS, возможно ли это сделать?

Ответ №1:

Вам нужно будет добавить в свой отчет группу строк, которая группируется по обозначению. Если в настоящее время у вас есть только группа строк «сведения», щелкните ее правой кнопкой мыши и добавьте родительскую группу. Вы можете удалить новый столбец, если он создан,, но не удаляйте группу.

Давайте предположим, что при создании этой группы строк вы вызвали ее grpDes

Далее, в текстовом поле, которое вам нужно настроить, щелкните его и на панели свойств найдите «заполнение» и разверните его, щелкните выпадающий список «слева» и выберите «выражение».

введите описание изображения здесь

Задайте для выражения что-то вроде

 =IIF(ROWNUMBER("grpDes") >1 AND Fields!Type.Value = "Payment", "10pt", "2pt")
  

Настройте 10pt так, как вы хотите…

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

Итак, что это делает, группирует данные по обозначению, затем проверяет номер строки в каждой группе. Если строка не является первой в группе с в группе И тип «оплата», то установите отступ в 10 пунктов, в противном случае установите его в 2pt (SSRS по умолчанию)

Ответ №2:

Вы могли бы сделать это в SQL следующим образом:

 select (case when type = 'Payment' then concat('     ', designation)
             else designation
        end) as designation, type, amount
from t
order by designation, type;
  

В SSRS может быть совершенно другой метод.

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

1. Я никогда не думал о том, чтобы сделать это через SQL, я могу попробовать и это. Приведенный выше код проверяет только Type = ‘Payment’, но он также не проверяет, совпадает ли обозначение, верно

2. @jwalls91 . . . Это, похоже, не было частью вашего вопроса.