2017-08-14 6 views
0

Ich versuche, passieren einen Bericht aus einer Abfrage zu erstellen, die eine Liste der Transaktionen gibt, die Folgendes enthält: Trans_Id, Trans_Type, date, amount, status, clientWie einzelne Parameter, mehrere Parameter oder null auf einen Bericht

die Abfrage würde einfach die folgende sein:

Select Trans_Id, Trans_Type, date, amount, status, client 
from table. 

Was ich alles tun will, ist für den Bericht der Spalten als Parameter hinzuzufügen, den Benutzer erlaubt, einen Parameter oder mehr als ein paramete zu füllen r und basierend darauf wird die Daten zurückgeben oder nichts füllen, so dass alles zurückgegeben wird. Es ist wie eine WHERE-Bedingung zu aktivieren, wenn ein Parameter gefüllt ist, ansonsten alles zurückgeben.

Jede Hilfe sehr

Antwort

1

Eine Möglichkeit, dies zu tun wäre eine Funktion sein, die eine SELECT-Anweisung zu montieren dynamische SQL verwendet, basierend auf dem besiedelten Paramater geschätzt würde. Das ist jedoch wahrscheinlich zu viel Aufwand für die einfache Abfrage, die Sie posten.

Diese Lösung überprüft, ob jeder Parameter null oder vergleicht diese mit der zugehörigen Säule:

Select Trans_Id, Trans_Type, date, amount, status, client 
from your_table yt 
where (:p_Trans_Id is null or :p_Trans_Id = yt.Trans_Id) 
and (:p_Trans_Type is null or :p_Trans_Type = yt.Trans_Type) 
and (:p_date is null or :p_date = yt.date) 
and (:p_amount is null or :p_amount = yt.amount) 
and (:p_status is null or :p_status = yt.status) 
and (:p_client is null or :p_client = yt.client) 
/ 

Dies ist eine anerkannte Technik, aber es kann zum Abstimmen Eine solche Abfrage schwierig sein. Testen Sie es also gründlich mit realistischen Datenmengen.


Hinweis: Die Parametersyntax hängt vom Client ab, der zum Aufrufen der Anweisung verwendet wird.

Verwandte Themen