#reporting-services #reportbuilder3.0
#службы отчетов #reportbuilder3.0
Вопрос:
У меня есть следующий оператор обращения, дата назначения не всегда заполняется и поэтому требует извлечения из других полей даты — при выполнении этого оператора требуется иметь одну дату назначения (заполненную из многих полей)
, не возвращает полных результатов.
,Case=назначение, когда дата назначения равна нулю, затем ChaseDate, когда ChaseDate равно нулю, затем DueDate, иначе дата назначения заканчивается
Есть мысли о том, где я ошибся?
Заранее благодарю вас.
Ответ №1:
Вы не указали, должно ли это быть выражением в SSRS или это часть вашего запроса к набору данных.
Предполагая, что здесь SQL Server…
Если это часть вашего запроса к набору данных, вы можете сделать что-то вроде
SELECT
FieldA, FieldB,
myAppointmentDate = COALESCE(AppointmentDate, ChaseDate, DueDate)
FROM myTable
COALESCE
вернет первое ненулевое значение
Если вы пытаетесь сделать это в выражении SSRS, вам нужно использовать SWITCH()
оператор.
=SWITCH(
Fields!AppointmentDate.Value <> Nothing, Fields!AppointmentDate.Value,
Fields!ChaseDate.Value <> Nothing, Fields!ChaseDate.Value,
Fields!DueDate.Value <> Nothing, Fields!DueDate.Value,
True, Fields!AppointmentDate.Value
)
Это вернет первое выражение, то есть true
, если ни одно из первых трех выражений не возвращает true , final True
действует как else (который в вашем случае Nothing
все равно вернется)
Комментарии:
1. Извините, часть запроса к набору данных
2. Хорошо, так что просто ОБЪЕДИНИТЕ пример выше. Однако порядок столбцов важен, COALESCE вернет ПЕРВОЕ ненулевое значение.