过滤器 SSRS 中的许多 int 值

Many int values in filter SSRS

我尝试按几个数字过滤数据,但不能使用 IN,因为它需要字符串值。我该怎么做?

我试过这样的东西,但它不起作用。如何传递几个 int 值来过滤?

您可以在报告中创建一个参数(过滤器),该参数将接受由 , 或其他字符分隔的数字。该参数将是字符串,它看起来像这样:

在 SQL 过程中使用 SPLIT_STRING 函数分隔这些值。

这是一个简单的例子。

CREATE TABLE #Numbers ( Num INT ) INSERT INTO #Numbers (Num) VALUES(1) INSERT INTO #Numbers (Num) VALUES(2) INSERT INTO #Numbers (Num) VALUES(3) INSERT INTO #Numbers (Num) VALUES(4) INSERT INTO #Numbers (Num) VALUES(5)

任务是 select 来自 #Numbers table 的一些值。要 selected 的值是:

DECLARE @MyValues CHAR(100) = '1, 3, 5, 7'

在您的示例中,@MyValues 是报告参数。

这些值将被分隔:

DECLARE @Separator CHAR = ','

下一步是分离@MyValues并存储它们:

CREATE TABLE #SplitValues ( NumValues INT ) INSERT INTO #SplitValues SELECT TRIM(Value) FROM STRING_SPLIT(@MyValues, @Separator)

最后一步是 select @MyValues#Numbers table:

SELECT * FROM #Numbers WHERE Num IN (SELECT * FROM #SplitValues)

可以选择在最后一个 select 中直接使用 SELECT TRIM(Value) FROM STRING_SPLIT(@MyValues, @Separator),而不是使用 #SplitValues table,但是,这种方式会起作用 TRIMSPLIT_STRING#Numbers table 中的每一行调用,即 "heavier" 执行。

最后,除了字符串参数,您还可以创建一个下拉复选框列表并以相同的方式传递其值,作为包含以逗号分隔的数字的字符串。