Ludwigmller
SQL-Guru
- Beiträge
- 172
Hallo,
ich möchte zu jedem Datensatz in der Tabelle
Hier mein Versuch:
Hier Testdaten:
Wie geht es richtig?
ich möchte zu jedem Datensatz in der Tabelle
doku
eine flaeche
aus der Tabelle groesse
errechnen/summieren, die aber von doku.datum
abhängt. Meine Idee war eine Subquery in der FROM-Clause, die so aber offenbar nicht zuläassig ist.Hier mein Versuch:
SQL:
select
d.datum,
d.mitglied_id,
d.wert,
subquery.flaeche
from
doku as d,
(
select
sum(g.reihenlaenge * g.reihenabstand) as flaeche
from
groesse as g
where
g.gueltig_von >= d.datum
AND (g.gueltig_bis <= d.datum OR g.gueltig_bis = NULL)
AND g.mitlgied_id = d.mitglied_id
) as subquery
Hier Testdaten:
Code:
create table doku
(
id serial primary key,
datum date,
mitglied_id integer,
wert integer
);
create table groesse(
mitglied_id integer,
part_id integer primary key,
reihenlaenge integer,
reihenabstand integer,
gueltig_von date,
gueltig_bis date
);
insert into groesse (mitglied_id, part_id, reihenlaenge, reihenabstand, gueltig_von, gueltig_bis) VALUES
(1, 1, 100, 3, '2022-01-01', NULL),
(1, 2, 150, 3, '2022-01-01', '2022-12-31'),
(1, 3, 100, 3, '2023-01-01', '2023-12-31'),
(2, 4, 300, 4, '2010-01-01', NULL),
(3, 5, 200, 3, '2020-01-01', '2021-12-31'),
(3, 6, 180, 3, '2022-01-01', '2023-12-31');
insert into doku (datum, mitglied_id, wert) VALUES
('2022-01-02', 1, 10),
('2023-01-02', 1, 15),
('2022-01-02', 2, 20),
('2023-01-02', 2, 30),
('2021-01-02', 3, 5),
('2022-01-02', 3, 10);
Wie geht es richtig?
Zuletzt bearbeitet: