SSRS Количество или сумма выражения
Я не могу понять, почему эти выражения Total не работают...
Я пытаюсь добавить все ячейки с датой позже, чем сегодня, с любыми ячейками, для которых указано "Не требуется", а затем разделить их на количество строк, чтобы получить процент.
Все, что я получаю, это #Error
,
Вот выражения, которые я пробовал:
=SUM(IIf(Fields!Jetter_Trng.Value >Today OR
Fields!Jetter_Trng.Value = "Not Reqd",1,0)))/(Count(Fields!Jetter_Trng.Value)
а также
=Count(IIf(Fields!Jetter_Trng.Value >Today OR
Fields!Jetter_Trng.Value = "Not Reqd",1,Nothing)))/(Count(Fields!Jetter_Trng.Value)
Строка "Не требуется" произошла из выражения, которое изменяет дату (01.01.1950) на "Не требуется". Может быть, это все портит
=iif(Fields!Jetter_Trng.Value = "01/01/1950", "Not Reqd", Fields!Jetter_Trng.Value)
Текущее рабочее выражение (не ищет "Не требуется"):
=COUNT(IIF(Fields!Jetter_Trng.Value>Today,1,Nothing)))/(Count(Fields!Name.Value))
Я немного растерялся...
1 ответ
Несколько замечаний о вашем выражении в нынешнем виде
Jetter_Trng представляется строкой, представляющей либо дату, либо "Не требуется". Вы не можете сравнивать строки с датами, не приведя их сначала к типу даты с помощью CDATE()
Количество брекетов (
(
а также)
) не совпадают
Корень вашей проблемы заключается в том, что вы используете Jetter_Trng для возврата либо даты, либо значения "не требуется".
Когда SSRS пытается оценить выражение, оно делает все это одновременно. Он не следует пути, чтобы найти ответ, и игнорирует другие пути. Поэтому, когда вы пытаетесь сравнить
Fields!Jetter_Trng.Value >Today
Это сравнивает строку с датой и выдает ошибку, поскольку это ничего не значит
"Not Reqd" > Today
Вы не сможете делать все, что хотите, используя только одно поле типа string.
Ваши варианты
- Используйте два поля - дата и флаг, указывающий не обязательно, или
- Используйте одно поле - но имейте "недопустимую дату" (возможно, 01.01.2100), которую вы затем можете рассматривать как значение "Не требуется", и проверьте, меньше ли текущая дата (чем она всегда будет)
Используя здесь второй вариант, вы можете использовать следующее выражение для создания желаемого расчета.
=sum(iif(CDate(Fields!Jetter_Trng.Value) > Today, 1, 0)) /
Count(Fields!Jetter_Trng.Value)
Который будет оценивать этот набор данных следующим образом