我正在使用 SSRS 2008 R2 并使用 Report Builder 3.0 构建报告。我有 3 个参数都用于限制我的数据来自同一列,即诊断代码。我的用户需要的是能够限制最多三个级别的潜在匹配。
例如,他们希望能够选择所有诊断,如“Z%”并显示这些诊断。他们希望能够选择所有诊断,如“Z%”和“W%”,并显示那些,但不显示任何只像“Z%”的诊断。他们还希望能够选择所有像“Z%”、“W%”和“U%”这样的诊断,而不是那些“只喜欢”“Z%”或只喜欢“Z%”和“喜欢”的诊断。 %”。
事实证明,这非常困难,在一个 SQL 查询中基本上是不可能的。我尝试使用 UNION,但它仍然限制了我。目前,我创建了 3 个单独的数据集,DXCode1、DXCode 2 和 DXCode3,每个数据集连接到不同的参数,允许第 2 和第 3 个参数为 NULL。我的报告表中有 3 行来显示我的诊断信息。诊断代码 (DXCode1) 第 1 行显示 Z% 之类的任何内容。诊断代码 (DXCode2) 第 2 行通过 LOOKUP 向我的第二个数据集显示任何 LIKE W%。诊断代码 (DXCode3) 第 3 行通过 LOOKUP 向我的第三个数据集显示任何 LIKE U%。
我在每一行都有一个隐藏列,用于检查我可能匹配的长度。
=LEN(Lookup(Fields!ChartNumber.Value, Fields!ChartNumber.Value, Fields!DiagnosisCode.Value,"DXCode2"))
ChartNumber 是我的唯一标识符。如果 DXCode1 和 DXCode2 中的内容匹配,则意味着我想展示一些东西。我使用 Row Visibility 隐藏任何值为 0 的行。我也在下一行重复这个逻辑。
当他们正在寻找一种以上的诊断代码时,这可以做任何事情。当他们只想要像“Z%”这样的诊断时,我不能使用相同的逻辑,否则它会隐藏所有内容。如果 DXCode2 和 DXCode3 为 NULL,我需要一些可以隐藏 DXCode2 和 DXCode3 的东西,但仍然允许我隐藏 DXCode1,仅当它单独存在时,并且仍然显示我的 DXCode1、DXCode2 和 DXCode3(如果它们匹配)。
我希望我已经正确解释了自己,并且有人可以提供解决方案。