简体   繁体   English

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

[英]How do I use a multi-value parameter with a CASE expression in SSRS?

I am trying to use a case expression to flag which records have any of the ID's listed in my parameter. 我正在尝试使用一个case表达式来标记哪些记录具有我的参数中列出的任何ID。 My code is something like this: 我的代码是这样的:

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

It works fine if I only use one value when it asks for a parameter, but if I put more than one I get : An Expression of non-boolean type specified in a context where a condition is expected, near ','. 如果我仅在请求一个参数时使用一个值,但如果我输入多个,则它会很好地工作:在需要条件的上下文中指定的非布尔类型的表达式,在','附近。

I've tried doing this several ways, including treating the parameter like it was a comma seperated string and trying to parse the substring. 我尝试了几种方法,包括将参数视为逗号分隔的字符串,并尝试解析子字符串。 I can't figure out how the parameter is passed, but I keep getting problems. 我不知道如何传递参数,但是我一直遇到问题。

I'm at wits end. 我机智。 Can anyone point me in the right direction? 谁能指出我正确的方向?

As per your requirement, you should go for Dynamic query. 根据您的要求,您应该进行动态查询。 Below code is working perfect. 下面的代码工作完美。

        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)
case when [ReturnedBy] IN (SELECT Split FROM [dbo].[ufn_Split](@param_1, ',')) then 1 else 0 end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM