我有两张桌子:
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给我不同的结果? 感谢的!
答案 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
希望有所帮助