Hallo Peter,
pmoegenb hat geschrieben:Kann es sein, dass Du automatisiert Datensätze mit einem Von und Bis Datum erzeugen möchtest ?
Fast, keine Datensätze nur eine Abfrageliste per SQL.
Ich habe eine Tabelle, in die wird in unregelmäßigen Abständen etwas eingetragen, jeder Datensatz hat auch eine Spalte Datum.
Nun frage ich per MIN("Datum") und MAX("Datum") die Grenzen ab.
Das SQL-Statement soll mir jetzt eine Spalte mit allen existierenden Tagen in einer Spalte "alle_Tage" zwischen diesen zwei Grenzen liefern.
z.B.
MIN("Datum") =22.12.2011
MAX("Datum") = 01.01.2012
Ergebnis:
"alle_Tage"
22.12.2011
23.12.2011
24.12.2011
25.12.2011
26.12.2011
27.12.2011
28.12.2011
29.12.2011
30.12.2011
31.12.2011
01.01.2012
Grund: Man kann das Ergebnis z.B. als Auswahlliste eines Listenfeldes oder für weitere Berechnungen verwenden.
Habe ich diese Spalte, kann ich z.B. alle Montage mit
Code: Alles auswählen
select "alle_Tage" as "alle_Montage" from "Tabelle" where dayofweak("alle_Tage")=2
abfragen.
Ich bin inzwischen schon weiter gekommen, das o.a. klappt, aber ich benötige dazu noch immer zwei Hilfstabellen.
1.) "03_Tage" in der alle Zahlen von 1 bis 31 als "N" aufgeführt sind.
2.) "04_Monate" in der alle Zahlen von 1-12 als "N" aufgeführt sind.
Die Abfrage sieht so aus:
Code: Alles auswählen
SELECT "Datum" FROM (SELECT DISTINCT CONVERT ( CONVERT ( YEAR( "Datum" ) || '-' || casewhen( "04_Monate"."N" < 10, '0' || "04_Monate"."N", CONVERT ( "04_Monate"."N" , "VARCHAR" ) ) || '-' || casewhen( "03_Tage"."N" < 10, '0' || "03_Tage"."N", CONVERT ( "03_Tage"."N" , "VARCHAR" ) ) , "TIMESTAMP" ) , "DATE" ) AS "Datum" FROM "Tabelle1", "04_Monate", "03_Tage") where DAYOFYEAR("Datum") and "Datum" >= (SELECT Min("Datum") FROM "Tabelle1") and "Datum" <= (SELECT Max("Datum") FROM "Tabelle1")
Das muß doch einfacher/kürzer möglich sein?
Gruß Rik