我正在尝试使用一个case表达式来标记哪些记录具有我的参数中列出的任何ID。我的代码是这样的:
SELECT
TRANSACTION_ID,
CASE WHEN CUSTOMER_ID IN (@PARAMETER) THEN 1 ELSE 0 END AS CUSTOMER_CLASS
如果我仅在请求一个参数时使用一个值,但是如果我输入多个,它将很好:在期望条件的上下文中指定的非布尔类型的表达式,在','附近
我尝试了几种方法,包括将参数视为逗号分隔的字符串,并尝试解析子字符串。我不知道如何传递参数,但是我一直遇到问题。
我机智。谁能指出我正确的方向?
答案 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