Ich möchte nun wissen, wie viele an den einzelnen Tagen zwischen 2017-01-01 und 2017-02-24 gelebt haben. Das soll mir gruppiert nach Ereignisdatum ausgegeben werden:
with stichtag as (
select distinct geburt as stichtag
from ereignis
where geburt < '2017-02-24'
union
select distinct gestorben as stichtag
from ereignis
where gestorben > '2017-01-02'
)
select s.stichtag
, (select count(*)
from ereignis
where s.stichtag between geburt and coalesce( gestorben, '2999-12-31')) as cnt
from stichtag s
order by s.stichtag;
Danke für eure Bemühungen und die raschen Lösungsvorschläge!
Ich habe die Abfrage von frastr übernommen und noch um eine where erweitert:
with stichtag as (
select distinct geburt as stichtag
from person
where geburt <= '2017-02-24'
union
select distinct gestorben as stichtag
from person
where gestorben >= '2017-01-02'
)
select s.stichtag
, (select count(*)
from person
where s.stichtag between geburt and coalesce( gestorben, '2999-12-31')) as cnt
from stichtag s
where s.stichtag >='2017-01-02'
and s.stichtag <='2017-02-24'
order by s.stichtag;
jetzt werden auch nur die Daten zwischen dem gewählten Zeitraum ausgegeben und keine früheren.