akretschmer
Datenbank-Guru
- Beiträge
- 10.379
okay, und was ist das Problem? "2020" müßte dann ersetzt werden, schreibst Du. Was genau ist jetzt daran kompliziert?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
edb=> create table t1 as select * from generate_series(1,10) s;
SELECT 10
edb=*> create view view_t1 as select * from t1 where s between 3 and 7;
CREATE VIEW
edb=*> select * from view_t1 where s between 4 and 6;
s
---
4
5
6
(3 rows)
edb=*> select * from view_t1 where s between 5 and 10;
s
---
5
6
7
(3 rows)
edb=*>
create table s ( bezeichnung text, sID integer) ;
insert into s values('s1',1),('s2',2),('s3',3);
create table p ( pID integer, sID integer, a int, b int, jahr1 int, jahr2 int);
insert into p values (1,1,2,1,2000,2021),(2,1,3,2,2000,null),(3,1,10,3,2000,2008),(4,2,1,2,2019,null),(5,2,1,3,2019,null),(6,3,5,2,2000,2005);
SELECT
s.sid,
s.bezeichnung,
sum(p.a * p.b) AS flaeche
FROM s,p
WHERE s.sid = p.sid
AND p.jahr1 <= 2004 AND ((p.jahr2) >= 2004 OR p.jahr2 IS NULL)
GROUP BY s.sid,s.bezeichnung;
Also in dem speziellen Fall dann eine Function?hrm, in dem Fall blöd, weil, ja, das schon alles aggregiert ist und die Informationen aus dem Basistabellen fehlen.
Also in dem speziellen Fall dann eine Function?
Welche Alternativen gäbe es denn sonst?
View geht ja so nicht
Da ich die Abfrage wie gesagt häufiger brauche, wäre es meiner Meinung nach aufwendiger alles nochmal einzutippen (obiges Bsp. ist ja auch etw. gekürzt). Daher werde ich wohl eine function schreibenna, die Abfrage direkt ausführen.
AND p.jahr1 <= 2004 AND ((p.jahr2) >= 2004 OR p.jahr2 IS NULL)
stattdessen z.B.: 9999 zu verwenden
Am schönsten wäre natürlich ein DATE mit 'infinity'
psql (13.1 (Ubuntu 13.1-2))
Type "help" for help.
test=# select 'infinity'::date;
date
----------
infinity
(1 row)
test=*#