PAT Enterprise.Information System.Abfragen: Unterschied zwischen den Versionen
Aus PPwiki
Schild (Diskussion | Beiträge) (→Parameter) |
Schild (Diskussion | Beiträge) (→Parameter) |
||
Zeile 2: | Zeile 2: | ||
= Parameter = | = Parameter = | ||
− | * Bei optionalen Parametern wird zu Anfang der Zeile (Bedingung) ein Fragzeichen geschrieben (ohne Einrückung!), z.B. ''?AND B_AUFTRCOL.FORM = :FORM''. | + | * Bei '''optionalen Parametern''' wird zu Anfang der Zeile (Bedingung) ein Fragzeichen geschrieben (ohne Einrückung!), z.B. ''?AND B_AUFTRCOL.FORM = :FORM''. |
** Gibt es nur optionale Parameter, muss hinter dem WHERE erstmal ein Ausdruck folgen, der immer wahr ist (z.B. 1=1). | ** Gibt es nur optionale Parameter, muss hinter dem WHERE erstmal ein Ausdruck folgen, der immer wahr ist (z.B. 1=1). | ||
* Parameter als '''IN''' (Multiselect): WHERE ... IN (:Parameter) | * Parameter als '''IN''' (Multiselect): WHERE ... IN (:Parameter) |
Version vom 25. Mai 2022, 10:39 Uhr
Inhaltsverzeichnis
1 Parameter
- Bei optionalen Parametern wird zu Anfang der Zeile (Bedingung) ein Fragzeichen geschrieben (ohne Einrückung!), z.B. ?AND B_AUFTRCOL.FORM = :FORM.
- Gibt es nur optionale Parameter, muss hinter dem WHERE erstmal ein Ausdruck folgen, der immer wahr ist (z.B. 1=1).
- Parameter als IN (Multiselect): WHERE ... IN (:Parameter)
- Oder WHERE ... = IN(:land)?
- Alle drei Lookup Optionen für Parameter funktionieren nur mit Textfeldern (Varchar2 bzw. String), nicht mit Zahlenwerten oder Datumsangaben.
- Gespeicherte Filter nach Ändern von Parametern in der SQL Abfrage löschen.
- Sonst wird u.U. falsch oder gar nicht gefiltert.
1.1 Datum als Parameter
- Wenn aus als Parametern eingegebenen Daten Zeitdifferenzen in Tagen errechnet werden sollen, müssen diese u.U. erst in Integer umgewandelt werden.
- Das funktioniert so nur mit ganzen Tagen. Das Format 'J' gibt nur die Julianische Tageszahl als Integer zurück, nicht die Zeit als Dezimalstelle hinter den Komma.
- Im Beispiel funktioniert so im BI Tool, also im Select ohne Umwandlung, aber Level <= nur mit Umwandlung. Im SQL Developer erzeugt es Fehler.
SELECT :VON - 1 + level AS datum FROM dual CONNECT BY LEVEL <= to_number(to_number(to_char(:BIS ,'J')) - to_number(to_char(:VON ,'J')) +1 )
2 Zwei Felder verknüpfen
Wie können zwei Felder - z.B. Name1, Name2 - miteinander verknüpft werden?
select Name1||' '||Name2 Beide_Namen ....