Du kan bruge dense_rank()
og aritmetik for at sætte rækkerne i grupper af 3:
select b.*,
ceiling(dense_rank() over (order by id) / 3)
from bibles b
Spørgsmålet er så, hvordan man får datoerne. Baseret på dit eksempel kan dette være:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b;
Men - 1
afhænger af, hvad den første række er i resultatsættet. Hvis du vil have det til at starte ved 365, så:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b
where id >= 365;