将SSRS参数作为参数传递给Query

问题描述 投票:0回答:2

最近在SSRS中有一种情况,我无法找到符合我要求的正确逻辑,有人可以帮助我解决逻辑中的问题。

我试图将参数值传递给SSRS数据集查询。请参考下面的查询。当我尝试手动执行查询时,它会运行,但是当我在其中传递参数时,没有提供所需的输出,请参阅我在SSMS中执行查询的屏幕截图。

DataSet查询


Select * from(
SELECT     @Defaulter_Type AS Priority_Count, Priority
FROM         Quality_Portal_Data_Fact_Graph)  temp

SQL查询


SELECT [NEW_PID_2],[Priority_1] 
  FROM [OneWindowPRD].[dbo].[Quality_Portal_Data_Fact_Graph]

虽然,当我尝试传递参数时,我想出了一件事。它通过单个cort传递值,因为它显示的数据是下面提到的形式。

output of the query when I pass parameter

有人可以建议我该怎么做才能删除这些单一的cort。请建议任何其他方法或逻辑来选择用户给出的查询列

我已经尝试过SUBSTRING它不起作用了。请参阅截图

SELECT QUOTENAME(SUBSTRING(@Defaulter_Type,2,LEN(@Defaulter_Type) - 2))AS Count_Priority FROM Quality_Portal_Data_Fact_Graph

enter image description here

enter image description here

enter image description here

我试图在查询中传递的参数是用户传递的column_name,它是单值列。请参考截图是有人有任何建议或其他方法

sql-server reporting-services ssrs-2008 ssrs-2008-r2 ssrs-tablix
2个回答
0
投票

你想做的事情是这样的:

DECLARE @sql varchar(1000) =
'
Select * from(
SELECT     ' + QUOTENAME(@Defaulter_Type) + ' AS Priority_Count, Priority
FROM         Quality_Portal_Data_Fact_Graph)  temp
'

EXEC (@sql)

这使用动态SQL来使用您的参数作为列名来构建查询字符串。然后它执行该查询以生成结果集。

您当前的查询将只选择@Defaulter_Type的值作为每行的字段Priority_Count的值。

此外,如果您的参数包含在要删除的引号中,请使用:

DECLARE @sql varchar(1000) =
'
Select * from(
SELECT     ' + QUOTENAME(SUBSTRING(@Defaulter_Type, 2, LEN(@Defaulter_Type) - 2)) + ' AS Priority_Count, Priority
FROM         Quality_Portal_Data_Fact_Graph)  temp
'

EXEC (@sql)

0
投票

如果您需要数据集中参数的值但它没有用作Where子句中的参数,那么您在SQL数据集中不需要它,只需将其作为SSRS报告中的附加列添加即可。但是,如果需要它作为参数,则可以在WHERE子句中将其作为@Defaulter_Type进行处理。 [为清晰起见添加了新内容] @ arpit-sharma我担心我不清楚你想要实现的目标。你能在后端(SSMS)尝试这样基本的东西:

Declare @Pid2 VarChar(10)
Set @NewPid = '0'

SELECT
    [Priority_1]
    ,[New_PID_2]
    ,[Project_Ending_3]
    ,[PSU_Status_4]
    ,[Project_Profile_5]
    ,[eUPP_Status_6]
    ,[iPMS_Setup_7]
    ,[PM_EO_8]
FROM [OneWindowPRD].[dbo].[Quality_Portal_Data_Fact_Graph]
WHERE [New_PID_2] = @NewPid

PID列看起来就像您要尝试过滤的那样,如果是这样,上面的SQL应该这样做,只要变量中有效值。

© www.soinside.com 2019 - 2024. All rights reserved.