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

Aus PPwiki
Wechseln zu: Navigation, Suche
 
Zeile 1: Zeile 1:
 
{{DISPLAYTITLE:BI Abfragen}}
 
{{DISPLAYTITLE:BI Abfragen}}
 
SQL Profis erfahren hier, wie sie die Abfragen im BI Designer ändern und die Filter bearbeiten können.
 
SQL Profis erfahren hier, wie sie die Abfragen im BI Designer ändern und die Filter bearbeiten können.
 +
 +
Das Anpassen der Ausgabe als Tabellen, Reports oder Dashboard wird [[PAT_Enterprise.Information_System|hier]] beschrieben.
  
 
= Parameter =
 
= Parameter =

Aktuelle Version vom 25. Mai 2022, 14:11 Uhr

SQL Profis erfahren hier, wie sie die Abfragen im BI Designer ändern und die Filter bearbeiten können.

Das Anpassen der Ausgabe als Tabellen, Reports oder Dashboard wird hier beschrieben.

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 )   

1.2 Nullwerte

Wir haben im PAT alle möglichen Flags, die NULL, N und J sein können.

Wie kann man das im BI Creator einrichten, dass man dort nur N oder J hat bei einem Flag, auch wenn es bei manchen Einträgen NULL ist (z.B FL_INAKTIV im Kundenstamm, da man ja nach NULL nicht selektieren kann).

So klappt es:

 
select kndgrp, kndnr, kndkbz, fl_inaktiv, plz, ort, land from b_kndstamm 
where 1=1
?and kndgrp = :Kundengruppe
?and land = :land
?and nvl(fl_inaktiv,'N') = :Inaktiv

In meiner DB sind von 39 Kunden einer auf J und einer auf N alle anderen sind NULL.

Wenn ich in meiner Liste nach N selektiere bekomme ich die 38, bei J den einen.

Im select-Teil der Abfrage darf man nicht schon "nvl" verwenden, erst bei den Selektionen.

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