繁体   English   中英

查询在ssms中工作,但在ssrs中不起作用

[英]query works in ssms but not in ssrs

所以我遇到的问题让我感到非常困惑。 我有一个使用带有4个参数的查询的数据集。 用户可以为不同的参数选择常规选项,除了一个选项是'ALL',如果用户选择将选择所有内容。

我运行SSRS报告,由于某种原因,当只有一个参数用户选择“ALL”时,它不返回任何记录,只返回一个空白表。 我尝试在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

谢谢!

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

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

关于Stack Overflow的问题有很多问题。

或者,您可以在参数下拉列表中创建“ Select All值,然后才能使用当前查询中使用的逻辑,但即使这样,我也会使用类似的东西......

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

这将获得您想要的结果,但如果您希望从t-sql代码获得更好的性能,请使用数据集的存储过程,并使用动态sql在用户传递All参数时完全过滤掉Where子句。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM