PAT Enterprise.Information System.Abfragen: Unterschied zwischen den Versionen
Aus PPwiki
Schild (Diskussion | Beiträge) (→Parameter) |
Schild (Diskussion | Beiträge) (→Parameter) |
||
Zeile 7: | Zeile 7: | ||
** Oder WHERE ... = IN(:land)? | ** Oder WHERE ... = IN(:land)? | ||
* Alle drei '''Lookup''' Optionen für Parameter funktionieren nur mit Textfeldern (Varchar2 bzw. String), nicht mit Zahlenwerten oder Datumsangaben. | * Alle drei '''Lookup''' Optionen für Parameter funktionieren nur mit Textfeldern (Varchar2 bzw. String), nicht mit Zahlenwerten oder Datumsangaben. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Zeile 40: | Zeile 27: | ||
?AND B_AUFTRCOL JAHR_BIS >= :JAHR AND B_AUFTRCOL.LFJAHR <= :JAHR_BIS | ?AND B_AUFTRCOL JAHR_BIS >= :JAHR AND B_AUFTRCOL.LFJAHR <= :JAHR_BIS | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | == 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. | ||
+ | |||
+ | <pre> | ||
+ | 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 ) | ||
+ | </pre> | ||
= 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.
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
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 ....