首页 > 解决方案 > 在报表生成器中,如何将值列表传递给参数,以便允许多个值或空值?

问题描述

我有一组 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 语句放入我的查询中的答案,但我不知道如何使它工作。)

标签: parametersdefault-valuereportbuilder3.0multiple-value

解决方案


推荐阅读