В построителе отчетов как я могу передать список значений параметру, чтобы он допускал несколько значений или нулевое значение?

#parameters #default-value #reportbuilder3.0 #multiple-value

Вопрос:

У меня есть набор из 14 запросов, которые ищут аномальные данные на основе некоторых шаблонов в предложениях WHERE. Такие вещи, как люди с «Неизвестными» фамилиями, фальшивыми адресами и т. Д. Мне было поручено составить краткое описание всех этих аномалий. Я попытался поместить их все в одно большое предложение WHERE с множеством операторов OR, но оно стало слишком большим и истекло по времени.

Итак, теперь у меня есть эти 14 запросов, которые ищут значения Person_ID и передают эти списки в качестве значений параметров по умолчанию. Затем у меня есть еще один запрос, который возвращает определенное количество значений Person_ID, которые отображаются во всех параметрах. Это работает до тех пор, пока не будет исправлен весь набор аномалий. Затем этот запрос возвращает нулевые результаты, и мой параметр выдает сообщение об ошибке.

Вот пример одного из 14 запросов об аномалиях.

 SELECT DISTINCT  PERSON_ID AS PregnantMalePersonID FROM  PERSON  LEFT OUTER JOIN PERSON_HEALTH  ON PERSON.PERSON_ID = PERSON_HEALTH.PERSON_ID AND PERSON.CREATED_DATE = PERSON_HEALTH.CREATED_DATE WHERE  PERSON.DISCARDED_DATE IS NULL  AND PERSON_HEALTH.PREGNANT_CODE = N'Yes'  AND PERSON_HEALTH.GENDER_CODE = N'Male'  

Вот сокращенная версия моего сводного запроса.

 SELECT DISTINCT  PERSON_ID FROM  PERSON  LEFT OUTER JOIN PERSON_HEALTH  ON PERSON.PERSON_ID = PERSON_HEALTH.PERSON_ID AND PERSON.CREATED_DATE = PERSON_HEALTH.CREATED_DATE WHERE  PERSON.STATUS_CODE = N'1'  AND (  PERSON_ID IN (@Dependents)  PERSON_ID IN (@InvalidName)  PERSON_ID IN (@PregnantMale)  PERSON_ID IN (@StateOfResidence)  )  

Когда пример аномалии возвращает нулевые результаты, я получаю эту ошибку.

«В параметре ‘PregnantMale’ отсутствует значение».

Мои параметры настроены так, чтобы разрешить несколько значений, но я также не могу разрешить значения null. Есть ли способ обойти это? (Я видел еще один ответ о том, чтобы где-то вставить оператор UNION ALL в мой запрос, но я не мог понять, как это сделать.)