Добавьте "Н / Д", если все поля пусты. Выражение SSRS.

У меня есть несколько полей в одном столбце моей таблицы. У меня это есть, если field1 пустое display field2 и т. Д. Что я пытаюсь сделать сейчас, это если все поля пусты, отображать N / A.

То, что я пробовал ниже;

=IFF(ISNothing(Fields!field1.Value) & IIF(IsNothing(Fields!field2.Value),"N/A",VbCRLF & Fields!field2.Value))

Иногда отображается поле field1N / A.

Может кто-то указать мне верное направление?

Спасибо,

ОБНОВЛЕНИЕ 1:

Я тоже пробовал;

=IFF(ISNothing(Fields!field1.Value),"N/A",Fields!field1.Value & IIF(IsNothing(Fields!field2.Value),"N/A",VbCRLF & Fields!field2.Value))

Это тоже не сработало.


person AndroidAL    schedule 10.08.2015    source источник


Ответы (2)


Есть два способа сделать это. Вы можете обработать это в SQL Server Query или в SSRS.

Метод 1: TSQL

Вы можете использовать функцию COALESCE, чтобы найти первое ненулевое значение. Замените его на N / A, если все равны NULL.

SELECT COALESCE(Field1, Field2, Field3, 'N/A') AS newFieldValue, ....
FROM myTable.....
WHERE ....

Метод 2: SSRS

В SSRS нет COALESCE эквивалента. Вы можете использовать iif или switch для имитации логики.

=SWITCH(NOT(ISNothing(Fields!field1.Value)), Fields!field1.Value, 
       NOT(ISNothing(Fields!field2.Value)), Fields!field2.Value,
       NOT(ISNothing(Fields!field3.Value)), Fields!field3.Value,
       1=1, "N/A")

Также помните, что если в поле есть место, оно не будет обрабатываться функцией ISNULL. В этом случае вам также нужно будет использовать аналогичную логику для обработки пустых пространств.

HTH.

person Anup Agrawal    schedule 10.08.2015

Я бы посоветовал вам ISNULL.

Пример использования следующим образом:

ISNULL (su.address1_line2; 'Н / Д')

Это найдет нулевые значения в этом столбце и заменит их на N / A в отчете.

person John O'Grady    schedule 10.08.2015
comment
Привет, спасибо за ответ. Так что я мог бы пойти ISNULL (Field1.value, Field2.value, N / A) - person AndroidAL; 10.08.2015
comment
Привет, afaik, вам нужно будет обернуть функцию idk isnull вокруг каждой переменной отдельно, как в примере выше, например. ISNULL (поле1, 'Н / Д'), а затем ISNULL (поле2, 'Н / Д'). Это заменяет нулевые значения указанным вторым аргументом, в этом случае N / A, хотя это может быть пустая строка. Обратите внимание на синтаксис одинарных кавычек вокруг заменяемой строки. Я нашел это полезным подходом, когда вы хотите применить дальнейшие преобразования к строкам ... Например, Конкатенация. Если вы объединяете несколько строк, и одна из них имеет значение NULL, в общем случае результирующее значение строки будет изменено на NULL. - person John O'Grady; 11.08.2015