【问题标题】:the query works fine in SQL server, but not in SSRS该查询在 SQL Server 中运行良好,但在 SSRS 中运行良好
【发布时间】: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


【解决方案1】:

一个简单的解决方法是将查询保存为存储过程。然后让 SSRS 执行存储过程。这让我之前解决了复杂的查询问题。

【讨论】:

  • 好主意,但是我不喜欢尽可能多地使用存储过程,因为要维护。
猜你喜欢
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 2020-06-04
  • 2017-11-16
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多