将 SSRS 参数作为参数传递给查询
Passing SSRS parameter into Query as parameter
最近在 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。
请向 select 用户
给出的查询列提出任何其他方法或逻辑
我已经尝试过 SUBSTRING 它不起作用。请参考截图
SELECT QUOTENAME(SUBSTRING(@Defaulter_Type, 2, LEN(@Defaulter_Type) - 2)) AS Count_Priority
来自 Quality_Portal_Data_Fact_Graph
我试图在查询中传递的参数是用户传递的column_name,它是单值列。请参考截图是否有人有任何建议或其他方法
您是否正在尝试执行以下操作:
DECLARE @sql varchar(1000) =
'
Select * from(
SELECT ' + QUOTENAME(@Defaulter_Type) + ' AS Priority_Count, Priority
FROM Quality_Portal_Data_Fact_Graph) temp
'
EXEC (@sql)
这使用动态 SQL 将您的参数用作列名来构建查询字符串。然后它会执行该查询以生成您的结果集。
您当前的查询只会 select @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)
如果您需要数据集中某个参数的值,但它没有被用作 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 应该这样做,前提是变量中有一个有效值.
最近在 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。 请向 select 用户
给出的查询列提出任何其他方法或逻辑我已经尝试过 SUBSTRING 它不起作用。请参考截图
SELECT QUOTENAME(SUBSTRING(@Defaulter_Type, 2, LEN(@Defaulter_Type) - 2)) AS Count_Priority 来自 Quality_Portal_Data_Fact_Graph
我试图在查询中传递的参数是用户传递的column_name,它是单值列。请参考截图是否有人有任何建议或其他方法
您是否正在尝试执行以下操作:
DECLARE @sql varchar(1000) =
'
Select * from(
SELECT ' + QUOTENAME(@Defaulter_Type) + ' AS Priority_Count, Priority
FROM Quality_Portal_Data_Fact_Graph) temp
'
EXEC (@sql)
这使用动态 SQL 将您的参数用作列名来构建查询字符串。然后它会执行该查询以生成您的结果集。
您当前的查询只会 select @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)
如果您需要数据集中某个参数的值,但它没有被用作 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 应该这样做,前提是变量中有一个有效值.