首页 > 解决方案 > 将 SSRS 参数作为参数传递给 Query

问题描述

最近在 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 传递值,因此它显示的数据是下面提到的形式。

当我传递参数时查询的输出

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

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

从 Quality_Portal_Data_Fact_Graph 中选择 QUOTENAME(SUBSTRING(@Defaulter_Type, 2, LEN(@Defaulter_Type) - 2)) 作为 Count_Priority

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

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

标签: sql-serverreporting-servicesssrs-2008ssrs-2008-r2ssrs-tablix

解决方案


您是否尝试执行以下操作:

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)

推荐阅读