4. April 2007

Multi-Select from DUAL

Ein einfacher Weg um Datensätze aus dem Nichts zu erzeugen ist ein einfacher SELECT mit einem CONNECT BY gegen DUAL.

Wenn man zum Beispiel in einer Forms-LOV die letzten 12 Monate anzeigen möchte, dann benötigt man eine Record-Group, die genau 12 Datensätze zurückgibt. Danach kombiniert man das noch mit dem Sysdate:

SELECT Level LVL
FROM Dual
CONNECT BY Level <= 12;

jetzt bringt man Sysdate ins Statement:

SELECT add_months (trunc (sysdate, 'MM'), -1*Level) Month
FROM Dual
CONNECT BY Level <= 12;

MONTH
--------
01.03.07
01.02.07
01.01.07
01.12.06
01.11.06
01.10.06
01.09.06
01.08.06
01.07.06
01.06.06
01.05.06

ist das nicht eine genial einfache Lösung für die Selektion der letzten 12 Monate?

Keine Kommentare: