2017-08-24 4 views
0

Ich benutze das Stimulsoft Design, um Berichte zu erstellen, und ich verwende zwei Variablen zu filtern.Zwei verschiedene Abfragen auf stimulsoft, wenn Variablen gefüllt sind oder nicht

Deshalb möchte ich die Datenquelle machen eine SQL-Anweisung zu bauen, wenn Filter ein gefüllt ist und das andere ist leer und eine andere SQL, wenn der Filter zwei gefüllt ist und das andere ist leer, und vielleicht ein anderes Aussage ...

So wäre es so etwas wie dieses:

Wenn der Filter ein gefüllt ist und das Filter zwei leer ist, dann SELECT 1 machen, das ist:

SELECT * FROM tableExample WHERE column1 LIKE '%{filter1}%' 

Wenn Filter zwei gefüllt ist und das Filter ist leer , dann mache SELECT 2, was ist:

SELECT * FROM tableExample WHERE id = '%{filter2}%' 

und ID ist ein Primärschlüssel.

Nun, kann ich das tun?

Vielleicht könnte ich es nur mit SQL überprüfen, aber ich kann nicht herausfinden, wie das geht, könnte mir bitte jemand helfen?

Vielen Dank!

+0

Fragen Sie hier nach einer einzelnen Abfrage? –

+0

Ja. Entweder, wenn Sie wissen, wie man Stimulsoft benutzt und könnte mir beibringen, wie man zwei Abfragen abhängig von den Benutzereingaben macht oder vielleicht einen einfacheren Weg, dies zu lösen, was diese beiden Abfragen zusammenführen würde. –

Antwort

1

Wenn Sie für eine einzelne Abfrage suchen, die Sie Ihre Logik enthält könnten versuchen, die folgenden:

SELECT * 
FROM tableExample 
WHERE 
    (COALESCE(filter2, '') = '' AND COALESCE(filter1, '') <> '' AND 
    filter1 LIKE '%{filter1}%') OR 
    (COALESCE(filter1, '') = '' AND COALESCE(filter2, '') <> '' AND 
    id = '%{filter2}%') 

Hinweis, die etwas hässlich COALESCE Anrufe gibt es, weil ich weiß nicht, was Sie von empty bedeuten. Bedeutet dies NULL, leere Zeichenfolge oder beides?

+0

Danke, genau das habe ich gesucht. –

Verwandte Themen