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>
查询的结果部分是:
我想知道将参数值传递给基础数据集中 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>
查询的结果部分是: