Оператор обращения (Reportbuilder)

#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 вернет ПЕРВОЕ ненулевое значение.