parameters - 在报表生成器中,如何将值列表传递给参数,以便允许多个值或空值?
问题描述
我有一组 14 个查询,它们根据 WHERE 子句中的某些模式查找异常数据。诸如姓氏中带有“未知”的人、虚假地址等之类的东西。我的任务是创建所有这些异常的摘要。我试图将它们全部放入一个包含许多 OR 运算符的大 WHERE 子句中,但它变得太大并且超时。
所以现在我有这 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’参数缺少值。”
我的参数设置为允许多个值,但我也不能允许空值。有没有解决的办法?(我看到另一个关于将 UNION ALL 语句放入我的查询中的答案,但我不知道如何使它工作。)