2016-07-31 5 views
0

Ich habe zwei Tabellen:Parameterauswahl in SSRS

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 

Und eine andere Tabelle

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

Ich mag, dass, wenn der Benutzer auf dem "portfolio_num" in meinem Bericht, zum Beispiel klicken, wird „112 "er wird diese Ausgabe in einem zweiten Bericht erhalten:

portfolio_num AssetCode Ltv 
112    111  0.12 
911    111  0.12 

Jetzt baue ich ein Verfahren wie folgt aus:

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 

Dies ist die Prozedur, die ich in den freigegebenen Datensatz eingefügt habe.

Wenn ich die proceure auf SQL Server Management Studio ausführen:

exec [dbo].[Give_DetailsForLoan] 112 

Ich bekomme, was ich will:

portfolio_num AssetCode Ltv 112 111 0,12 911 111 0,12

jedoch Ich die SSRS bekomme ich nur

portfolio_num AssetCode Ltv 
112    111  0.12 

Beim Klicken auf die Portfolio-Nummer im ersten Bericht.

Ich denke, das Problem besteht darin, den richtigen Filter zu setzen.

Jeder Vorschlag, warum die ssrs mir verschiedene Ergebnisse geben? Danke!

Antwort

0

Ihre gespeicherte Prozedur ist falsch

Angenommen, Sie Eingabeparameterwert 112, Ihre innere Abfrage wird wie

select P_Second from dbo.Table2 where P_First = 112 

ausgeführt werden, die Sie setzen nun ein Ergebnis geben

112 
911 

die Die verbleibende Abfrage ist wie folgt:

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

So erhalten Sie nur eine Zeile.

Um das Ergebnis zu erhalten, die Sie benötigen, müssen Sie eine Verknüpfung tun, so etwas wie:

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

Hoffe, es hilft