SQL Server Report Builder 3 使用 SQL IN 运算符,参数不起作用



我正在尝试在单个列上使用 IN 运算符过滤 SSRS 中的数据集。当我添加多个值时,它会失败。

为简单起见,这是我的SQL语句,排除了其他过滤器以专注于新问题。

SELECT * FROM vActivityDetailed WHERE Category IN (@Category)

@Category受"数据集属性"下的替代表达式影响。

=Split(Parameters!Category.Value, ",")

我没有使用多值参数,而是将其视为单个值,并希望通过执行拆分,SSRS 应该像这样执行。

C# - ASP.NET 代码

string categoryString = "Expenses, Misc, Accounts-Receivable";
paramPayType.Name = "Category";
paramPayType.Values.Add((categoryString!= "" ? categoryString : null));

SSRS 最终 SQL 执行(预期(

SELECT * FROM vActivityDetailed WHERE Category IN ('Expenses', 'Misc', 'Accounts-Receivable')

由于我已经使用 SQL Server Management Studio 直接在 SQL 上对此进行了测试,因此我知道上述 SQL 应该可以工作,因为它返回记录,但是在 SSRS 中应用时,它会失败并显示An error has occurred during report processing. (rsProcessingAborted)

SSRS 中的参数值是选择多个值时的字符串数组。Split函数将单个字符串作为其参数。不能将Split与数组一起使用。带有 SQL Server 的 SSRS 会为您处理值的拆分,因此您应该能够直接传递参数。

如果您出于某种原因需要实际拆分值,我建议您使用自定义 SQL 函数。如果您对此进行搜索,则有很多示例。

最新更新