#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 . . . Это, похоже, не было частью вашего вопроса.