【发布时间】:2019-04-06 04:28:13
【问题描述】:
我正在尝试使用 case 表达式来标记哪些记录具有我的参数中列出的任何 ID。我的代码是这样的:
SELECT
TRANSACTION_ID,
CASE WHEN CUSTOMER_ID IN (@PARAMETER) THEN 1 ELSE 0 END AS CUSTOMER_CLASS
如果我在请求参数时只使用一个值,它会正常工作,但如果我输入多个值,我会得到:在预期条件的上下文中指定的非布尔类型的表达式,靠近 ',' .
我尝试了几种方法,包括将参数视为逗号分隔的字符串并尝试解析子字符串。我无法弄清楚参数是如何传递的,但我一直遇到问题。
我束手无策。谁能指出我正确的方向?
【问题讨论】:
-
是@PARAMETER 在您的查询中声明还是来自SSRS?你在其他地方使用@参数吗? SSRS 应该处理多个值的解析,因此它应该工作。
-
正如汉诺威所说,这应该有效。 SQL sn-p 是直接来自数据集查询还是调用存储过程?如果它是一个存储过程,您的代码将无法工作,但如果查询直接在您的数据集查询中,那么它应该可以正常工作。
标签: sql reporting-services parameter-passing case multivalue