将SSRS参数作为参数传递到查询

时间:2019-04-03 13:15:21

标签: sql-server reporting-services ssrs-2008 ssrs-2008-r2 ssrs-tablix

最近在SSRS中出现一种情况,在这种情况下我无法找出符合我要求的正确逻辑,请有人帮我解决我的逻辑问题。

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

数据集查询


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计数优先级 从Quality_Portal_Data_Fact_Graph

enter image description here

enter image description here

enter image description here

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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应该这样做,并在变量中提供了有效值。