SSRS:有没有办法将参数值传递给 SQL 查询中的 "Values" 关键字?

SSRS: is there a way of passing the values of a parameter to a "Values" keyword in the SQL query?

我想知道将参数值传递给基础数据集中 SQL 中的 "VALUES" 关键字的正确方法。我正在使用 Microsoft Report Builder v3.0,查询 MS-SQL 数据库。

目前,经过大量的谷歌搜索和堆栈溢出,我想出了以下很好用的 SQL 来找到诊断代码以 "AB" 开头的患者或 "XC":

SELECT
    x.PatientId

FROM
  (
    VALUES
      ('AB%'),
      ('XC%')
  ) AS v (pattern)

  CROSS APPLY

  (
    SELECT 
            p.PatientId, 
            p.LastName

    FROM
            dbo.Patient p
            inner join Course c on (c.PatientSer = p.PatientSer)
            inner join CourseDiagnosis cd on (cd.CourseSer=c.CourseSer)
            inner join Diagnosis diag on (diag.DiagnosisSer=cd.DiagnosisSer)


    WHERE       
            diag.DiagnosisCode like v.pattern
  ) AS x
;

然而,我想要做的是让搜索到的模式,如由"VALUES"关键字生成的那样,在用户选择对应于特定模式组的下拉框时生成。我为此使用了一个名为@Diagnoses 的参数,标签为 "Grouping1"(稍后会有其他分组 - 我打算使参数成为多值),值“'AB%','XC%'",但这不起作用 - 报告运行,但 returns 什么也没有,很明显我做错了什么。

我试图避免使用 "OR" 关键字在 WHERE 子句中直接指定这些诊断代码,因为我在这些方面找到的所有内容似乎都涉及使用单独声明的函数,以及模式规范/交叉- 应用解决方案似乎是最整洁的。

有人可以帮我吗?

提前致谢。

您可以使用 JOIN 组合参数值并使用数据集表达式构建查询文本。

="SELECT x.PatientId FROM (VALUES ('" & JOIN(Parameters!VALUES.Value, "'),('") & "') ) AS v (pattern) " & VBCRLF & 
 "CROSS APPLY " & VBCRLF & 
<rest of your query>

查询的结果部分是: