PAT Enterprise.Information System.Abfragen: Unterschied zwischen den Versionen
Aus PPwiki
Schild (Diskussion | Beiträge) |
Schild (Diskussion | Beiträge) (→Parameter) |
||
Zeile 18: | Zeile 18: | ||
to_number(to_number(to_char(:BIS ,'J')) - to_number(to_char(:VON ,'J')) +1 ) | to_number(to_number(to_char(:BIS ,'J')) - to_number(to_char(:VON ,'J')) +1 ) | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | nach dem WHERE Statement bei den optional Parametern muss ein = vor dem Parameter gesetzt werden | ||
+ | |||
+ | ?AND B_AUFTRCOL.FORM = :FORM | ||
+ | |||
+ | ?AND B_AUFTRCOL.LFJAHR = :JAHR | ||
+ | |||
+ | |||
+ | Bei einem IN Statement (also bei Multiselect) | ||
+ | |||
+ | ?AND B_AUFTRCOL.FORM IN (:FORM) | ||
+ | |||
+ | ?AND B_AUFTRCOL.LFJAHR IN (:JAHR) | ||
+ | |||
+ | |||
+ | Beim einem Datum: | ||
+ | |||
+ | ?AND B_AUFTRCOL JAHR_BIS >= :JAHR AND B_AUFTRCOL.LFJAHR <= :JAHR_BIS | ||
= Zwei Felder verknüpfen = | = Zwei Felder verknüpfen = |
Version vom 25. Mai 2022, 10:34 Uhr
Inhaltsverzeichnis
1 Parameter
- Gespeicherte Filter nach Ändern von Parametern in der SQL Abfrage löschen.
- Sonst wird u.U. falsch oder gar nicht gefiltert.
- 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.
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 )
nach dem WHERE Statement bei den optional Parametern muss ein = vor dem Parameter gesetzt werden
?AND B_AUFTRCOL.FORM = :FORM
?AND B_AUFTRCOL.LFJAHR = :JAHR
Bei einem IN Statement (also bei Multiselect)
?AND B_AUFTRCOL.FORM IN (:FORM)
?AND B_AUFTRCOL.LFJAHR IN (:JAHR)
Beim einem Datum:
?AND B_AUFTRCOL JAHR_BIS >= :JAHR AND B_AUFTRCOL.LFJAHR <= :JAHR_BIS
2 Zwei Felder verknüpfen
Wie können zwei Felder - z.B. Name1, Name2 - miteinander verknüpft werden?
select Name1||' '||Name2 Beide_Namen ....