SSRS中的参数选择

时间:2016-07-31 08:54:30

标签: reporting-services sql-server-2012

我有两张桌子:

Table1: 
portfolio_num AssetCode Ltv
112             111       0.12
113             222       0.11
114             333       0.13
911             111       0.12
912             222       0.11
913             333       0.13 

另一张表

Table 2: 
P_First P_Second  
112       112
112       911  
113       113       
113       912
114       114
114       913

我希望当用户点击我的报告中的“portfolio_num”时,例如“112”,他将在第二个报告中获得此输出:

portfolio_num AssetCode Ltv
112             111       0.12
911             111       0.12

现在我建立一个这样的程序:

ALTER PROCEDURE [dbo].[Give_DetailsForLoan]
@PortfolioID INT
AS
BEGIN

Select * 
from dbo.Table1 where portfolio_num 
in(
select P_Second from dbo.Table2
where  P_First = @PortfolioID
)

END

这是我粘贴到共享数据集的过程。

当我在sql server management studio上运行程序时:

exec [dbo].[Give_DetailsForLoan] 112 

我得到了我想要的东西:

portfolio_num AssetCode Ltv 112 111 0.12 911 111 0.12

但是,我只获得SSRS

portfolio_num AssetCode Ltv
112             111       0.12

点击第一份报告中的投资组合num。

我认为问题在于设置正确的过滤器。

有什么建议为什么ssrs给我不同的结果? 感谢的!

1 个答案:

答案 0 :(得分:0)

您的存储过程错误

假设您输入参数值112,您的内部查询将像

一样执行
select P_Second from dbo.Table2 where  P_First = 112

哪个会给你一个结果集

112
911

现在剩下的查询就像

Select * from dbo.Table1 where portfolio_num in (112, 911)

所以你只得到一排。

要获得所需的结果,您需要进行连接,例如:

select * 
from table_1 t1 join table_2 t2 on t1.portfolio_num = t2.p_First 
where t2.p_First = @portfolioID

希望有所帮助