【问题标题】:Passing SSRS parameter into Query as parameter将 SSRS 参数作为参数传递给 Query
【发布时间】:2019-04-03 13:15:20
【问题描述】:

最近在 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 它不起作用。请参考截图

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

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

【问题讨论】:

  • 定义“它不工作”。
  • 查询成功执行,但后端数据不来意味着由于单个 corts 无法正常工作
  • 什么是“single cort”?如果查询成功执行,为什么它“不起作用”,你没有得到你想要的结果吗?如果不是,为什么它们不正确?我们看不到您所看到的或读懂您的想法,因此您需要(详细)解释问题所在。
  • 不工作意味着查询没有给我想要的输出,它给了我屏幕截图中显示的输出。根据我的理解,我认为在这种情况下出现的问题是参数值与 corts 一起出现,无论如何我可以删除它们
  • 你是想说“引号”吗?

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


【解决方案1】:

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

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)

【讨论】:

  • 是的,我正在尝试传递与上述查询中提到的类似的值,但数据带有引号,因此没有出现所需的结果。默认情况下参数值带有单引号我正在尝试删除它们你有什么建议删除它们
  • 您是否尝试过我答案中的代码?如果参数实际上带有引号作为值的一部分,您可以尝试QUOTENAME(SUBSTRING(@Defaulter_Type, 2, LEN(@Defaulter_Type) - 2))
  • 它不工作我之前做了同样的事情它不工作
  • 我查看了您的屏幕截图,您似乎没有正确使用我发布的内容,例如,我没有看到 EXEC (@sql) 步骤。
  • Chris 我发布的截图是在执行查询之后
【解决方案2】:

如果您需要数据集中某个参数的值,但它没有用作 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 应该这样做,并在变量中提供一个有效值。

【讨论】:

  • 不工作 craig,请参阅我正在尝试在其他查询中使用该值作为 table_name 中的选择参数。请提出其他建议
猜你喜欢
  • 2021-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 2021-04-13
  • 2013-08-02
相关资源
最近更新 更多