【问题标题】:query works in ssms but not in ssrs查询在 ssms 中有效,但在 ssrs 中无效
【发布时间】:2018-05-12 22:32:02
【问题描述】:

所以我遇到的问题让我完全困惑。我有一个使用具有 4 个参数的查询的数据集。用户可以为不同的参数选择常规选项,除了一个选项“全部”,如果用户选择它将选择所有选项。

我运行 SSRS 报告,由于某种原因,当用户仅在其中一个参数上选择“全部”时,它不返回任何记录,只是一个空白表。我尝试在 SSMS 上的数据集后面重新创建相同的查询,并在相同的问题参数中输入“ALL”选项,它会返回我希望看到的所有记录。

查询:

Declare @workingParam1 as varchar(200)
Declare @workingParam2 as varchar(50)
Declare @workingParam3 as varchar(50)
Declare @problemParam as varchar(50) -- this one is giving me problems only 
                                     -- if I choose ' ALL'


SELECT        Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9
FROM            View
WHERE        
(Col1 = @problemParam OR @problemParam = ' ALL') And 
(Col2 = @workingParam1 OR @workingParam1  = ' ALL') And
(Col3 = @workingParam2 OR @workingParam2 = ' ALL') And 
(Col4 = @workingParam3 OR @workingParam3 = ' ALL')
ORDER BY Col1, Col2, Col3

谢谢!

【问题讨论】:

  • 我不确定在 SQL Server 中是否有任何设置可以更改此设置,您可能已经使用过该设置,但通常'%' = <somehting not '%'> 是错误的,我猜您的[field] 不是等于'%'。也许您想使用LIKE 而不是=?
  • 哎呀,我确实输入了 = 而不是 = 我是从记忆中输入的,我将编辑问题
  • 达里尔,我想你改错了(在WHEN而不是CASE的左边)...;)
  • 嘎哈..谢谢伙计!我现在刚刚编辑,我可以访问我的查询并使用 M. Ali 的版本更新它,因为它看起来更干净

标签: sql sql-server ssms ssrs-2012


【解决方案1】:

我相信您的 SSRS 报告中有一个多选参数。当您从 ssrs 报告中的参数下拉列表中选择 ALL 时,它不会将文字字符串 All 的值传递给您的 t-sql 查询,但它会将所有值以逗号分隔列表的形式传递给您的 t-sql, '1,2,3,4'.

现在您必须对 T-SQL 代码进行更改,以便它可以处理以逗号分隔列表形式传递的参数。

关于这个问题,Stack Overflow 上有很多问题。

或者,您可以创建您的 on Select All 值以显示在您的参数下拉列表中,只有这样您才能使用您在当前查询中使用的逻辑,但即使那样我也会使用类似...

WHERE (ColumnName = @Param OR @Param = 'All') 

这将获得您想要的结果,但是如果您希望从 t-sql 代码中获得更好的性能,请为您的数据集使用存储过程并使用动态 sql 完全过滤掉 Where 子句,如果用户通过 @987654327 @ 范围。

这个简短的答案中有很多信息,还有很多谷歌搜索供你做:)

【讨论】:

  • 抱歉延迟回复。参数均为单选。我尝试使用你的 where 子句。如果使用“ALL”值选择@problemParameter,我似乎遇到了同样的问题,它不返回任何记录。但是,当我选择“全部”时,其他 3 个参数可以正常工作。我会沿着SP路线走,看看我是否能获得更好的运气。谢谢!
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 2014-07-30
相关资源
最近更新 更多