【发布时间】:2016-04-26 18:50:55
【问题描述】:
报告查询有一个参数,该参数可以采用以下两个值之一:ActiveCustomers 或 AllCustomers,并根据用户选择的数据进行过滤。
我的问题是查询在 SQL Server 中工作正常,但在 SSRS 中无法正常工作,除非我在数据集查询或执行过滤的 where 子句中硬编码参数的值,使用“like”而不是“=”。
SSRS 参数定义为 TEXT 类型,具有可用值“ActiveCustomers”和“AllCustomers”,默认采用“ActiveCustomers”。 我已经检查了拼写是否正确且一致。
我的问题是为什么 SSRS 不能使用“=”,而我必须使用“like”。
这是我如何从数据集查询中声明参数和 where 子句:
declare @Show nvarchar(32) = 'ActiveCustomers' --or 'AllCustomers'
过滤数据的where子句是:
where (Order like '%2016')
and ((@Show = 'ActiveCustomers' and Order.[Status] <> 'Closed') or (@Show = 'AllCustomers'))
【问题讨论】:
-
我讨厌人们这样说但是你有什么问题? SSRS 的解析器似乎不喜欢 SSMS 允许通过的东西。 SSMS 转换的语法可能有问题,但 SSRS 不喜欢。
-
请显示您的 SQL 代码...至少在您声明参数和 where 子句的开始部分。另外,您如何定义 SSRS 中的参数?它是文本还是您使用“可用值”并将文本翻译成其他东西,如整数。很多地方都可以寻找这个问题......需要更多细节。
-
Hannover Fist 和 J Greene,我编辑了这个问题,希望能涵盖你想要的内容。
-
为什么不把参数硬编码到 where 子句中呢?您已经通过在声明它时设置它的值将它硬编码到查询中。您希望通过在参数声明中保持硬编码来获得什么?
标签: ssrs-2008-r2