在 SSRS 中使用 IN 语句进行查询

Using an IN statement for query in SSRS

在我正在构建的 SSRS 报告中,我有一个如下所示的查询:

SELECT ID, Name
FROM TableA
WHERE Name IN (@name)

然后在 SSRS 中,我将参数可用值设置为 'Get values from a query',值字段将如下所示:

'A','B','C'
'D','E','F'
'G','H','I'

标签字段是这样的:

Label A
Label B
Label C

当我运行查询

SELECT ID, Name
FROM TableA,
WHERE Name IN ('A','B','C')

在 SQL Management Studio 中返回了正确的结果,但是报告 returns 什么也没有。如何在 IN 语句中获取格式正确的值?

根据你的例子,我会这样处理...

创建一个 table 或包含您的标签和值的视图,例如

myTable:
    myCaption   MyValue
    'Label A'   'A'
    'Label A'   'B'
    'Label A'   'C'
    'Label B'   'D'
    'Label B'   'E'
    'Label B'   'F'
    'Label C'   'G'
    'Label C'   'H'
    'Label C'   'I'

对于您的第一个参数 (@myLabel),数据集只是

SELECT DISTINCT myCaption FROM myTable ORDER BY myCaption

您的第二个参数 (@myValues)(假设您希望用户能够从值中进行选择)将是

SELECT myValue FROM myTable WHERE myLabel = @myLabel

您需要使参数成为多值并将可用值设置为第二个数据集,您可以选择将默认值设置为同一数据集。

在您的主报告数据集中,查询就像您的示例一样

SELECT * FROM myDataTable WHERE myColumn IN (@myValues)

只要上面是直接在数据集查询中(换句话说,你没有使用存储过程),那么这将按预期工作。 SSRS 会自动将您的多值参数转换为逗号分隔列表并将其注入数据集查询,因此发送到服务器的实际查询将是 SELECT * FROM myDataTable WHERE myColumn IN ('A', 'B', 'C')