如何在SSRS中使用带有CASE表达式的多值参数?

时间:2018-11-01 21:54:27

标签: sql reporting-services parameter-passing case multivalue

我正在尝试使用一个case表达式来标记哪些记录具有我的参数中列出的任何ID。我的代码是这样的:

SELECT 
TRANSACTION_ID,
CASE WHEN CUSTOMER_ID IN (@PARAMETER) THEN 1 ELSE 0 END AS CUSTOMER_CLASS

如果我仅在请求一个参数时使用一个值,但是如果我输入多个,它将​​很好:在期望条件的上下文中指定的非布尔类型的表达式,在','附近

我尝试了几种方法,包括将参数视为逗号分隔的字符串,并尝试解析子字符串。我不知道如何传递参数,但是我一直遇到问题。

我机智。谁能指出我正确的方向?

2 个答案:

答案 0 :(得分:0)

根据您的要求,您应该进行动态查询。 下面的代码运行完美。

        Declare  @sql varchar(max), 
                 @PARAMETER varchar(100) = '1,2,3,4' //For ex
        set @sql = 
            'SELECT 
            TRANSACTION_ID,
            CASE WHEN CUSTOMER_ID IN ('+@PARAMETER+') THEN 1 ELSE 0 END AS CUSTOMER_CLASS'; 
Execute(@sql)

答案 1 :(得分:0)

case when [ReturnedBy] IN (SELECT Split FROM [dbo].[ufn_Split](@param_1, ',')) then 1 else 0 end