PAT Enterprise.Information System.Abfragen: Unterschied zwischen den Versionen

Aus PPwiki
Wechseln zu: Navigation, Suche
(Parameter)
(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.
== 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>
 
 
 
  
  
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


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 ....

3 Weiterführende Links