1

Ich habe ein Dataset erstellt von einer gespeicherten Prozedur, indem Sie einen mehrwertigen Parameter übergeben. Was ich jetzt brauche, ist zu überprüfen, ob alle Werte aus dem Parameter in einer bestimmten Spalte meiner Ergebnismenge zurückkommen oder nicht, und wenn nicht, dann zeige diese Werte im Bericht an.Vergleichen von Werten aus einem mehrwertigen Parameter zu einer Datenmenge Spalte in SSRS

Also, zum Beispiel, wenn ich die Werte 'a', 'b', 'c' und 'd' zu meinem Parameter übergebe, und wenn meine Datensatzspalte nur 'a' und 'd' enthält Ich brauche einen Weg, um 'b' und 'c' im Bericht anzuzeigen.

Danke, Pratik

+0

Welchen Datentyp Sie Spalte? Es könnte mit benutzerdefiniertem Code gemacht werden. –

+0

Es ist ein varchar. Selbst wenn ich an benutzerdefinierten Code dachte, ist der Ort, an dem ich feststecke, die einzigartigen Werte meiner Kolumne zu durchqueren. Ich bin nicht in der Lage, diesen Teil herauszufinden. – PratikGandhi

Antwort

1

Zunächst werden Sie eine Abfrage benötigen, die die Werte für Ihren Parameter liefert. Die Abfrage könnte wie folgt aussehen:

select 'a' as ParamValue 
union all 
select 'b' as ParamValue 
union all 
select 'c' as ParamValue 
union all 
select 'd' as ParamValue 

Set Sie Parameterwerte von dieser Abfrage gefüllt werden: enter image description here

Jetzt eine Tabelle hinzufügen, die Ihre Parameterwerte auflisten können.

enter image description here

Als Nächstes können Sie überprüfen, ob jeder Wert in der Haupt-Datensatz existiert eine Lookup Funktion wie folgt verwendet:

=IIf(IsNothing(Lookup(Fields!PARAMVALUE.Value,Fields!COLVALUE.Value,Fields!COLVALUE.Value, "MainDataSet")), True, False) 

Sie können als Filter verwenden, um dies nur die Parameterwerte zu zeigen, wo hat diese Funktion keinen Wert zurück:

enter image description here

+0

Es tut mir leid, aber ich habe Sie nicht dort, wenn Sie sagen, dass ich eine Abfrage für die Bereitstellung von Werten für meine Parameter benötigen, wird der Parameter Werte von Endbenutzern zur Laufzeit erhalten – PratikGandhi

+0

@PratikGandhi siehe meine Bearbeitung – StevenWhite

+0

Ich habe keine vordefinierte Liste von Werten, die dem Parameter zur Verfügung gestellt werden können, ich meine, es kann alles sein, was es in meiner Datensatzspalte gibt, plus einige mehr. In einem Szenario wie diesem bin ich nicht sicher, wie ich eine Abfrage für ein Dataset erstellen kann, das Werte von meinem Parameter erhält. – PratikGandhi

0

können Sie die Änderung gespeicherte Prozedur (oder eine neue basierend auf der alten für diesen Bericht)? Wenn ja, dann könnten Sie von einem INNER JOIN zu einem OUTER JOIN wechseln und dieses Ergebnis erhalten. Zum Beispiel, wenn Ihre gespeicherte Prozedur hat gezeigt, wie viele Kunden im letzten Monat in Rechnung gestellt wurden und sah aus wie:

SELECT ClientName, SUM(BillAmount) AS TotalBilled 
FROM Clients 
INNER JOIN Bills ON Clients.ClientId = Bills.ClientId AND Bills.BillDate >= DateAdd(m, -1, GetDate()) 
WHERE ClientId IN @ClientIds 
GROUP BY ClientName 
ORDER BY ClientName 

dann wäre dies keine Kunden ausschließt nicht in Rechnung gestellt. Wenn Sie auf eine OUTER JOIN wie so ändern:

SELECT ClientName, SUM(BillAmount) AS TotalBilled 
FROM Clients 
LEFT OUTER JOIN Bills ON Clients.ClientId = Bills.ClientId AND Bills.BillDate >= DateAdd(m, -1, GetDate()) 
WHERE ClientId IN @ClientIds 
GROUP BY ClientName 
ORDER BY ClientName 

dann ohne Rechnungen Kunden würden nach wie vor mit einem Null Betrag für den Betrag in Rechnung gestellt zeigen

+0

Ich bin afrad die gespeicherte Prozedur ändern wird nicht möglich sein / – PratikGandhi