Hallo,
ich habe einen Monat mit sagen wir 31 Tagen, an 5 dieser Tage gibt es Daten. ich möchte aber auch Datensätze wenn es keine Daten gibt, also sowas wie:
1…Daten
2…
3…
4…Daten
usw.
geht das irgendwie mit generate_series?
select g.dt::date as datum,
t.* -- Spalten der eigentlichen Tabelle
from generate_series(date '2023-10-01', date '2023-10-31', interval '1 day') as g(dt)
left join the_table t on t.some_date = g.dt::date
Hallo castrop,
danke für deine schnelle Antwort, dass ist es so noch nicht.
Ich brauche eben auch einen Datensatz aus dem generate_series heraus, auch wenn in der anderen Tabelle kein Datensatz drin ist.
Ich habe deines mal eingebaut bei mir:
SELECT
g.day,
EXTRACT(DAY FROM r_date),
EXTRACT(DAY FROM NOW()),
CASE
WHEN (something) = 0
THEN 0
ELSE
some_data
END as some_data
FROM
generate_series(1,31) as g(day)
left join some_table on EXTRACT(DAY FROM r_date) = g.day
WHERE (
EXTRACT(MONTH FROM r_date) = EXTRACT(MONTH FROM NOW())
AND
EXTRACT(YEAR FROM r_date) = EXTRACT(YEAR FROM NOW())
)
GROUP BY EXTRACT(DAY FROM r_date),g.day
Ich bekomme die Ausgabe:
möchte aber für alle 31 Tage einen Datensatz, auch wenn er leer ist, sprich in etwa so:
1 7052
2 141
3 0
4 no_data
5 no_data
6 31
7 681
usw.