U kunt dense_rank()
. gebruiken en rekenkunde om de rijen in groepen van 3 te plaatsen:
select b.*,
ceiling(dense_rank() over (order by id) / 3)
from bibles b
De vraag is dan hoe de data te krijgen. Op basis van uw voorbeeld zou dit kunnen zijn:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b;
Echter, de - 1
hangt af van wat de eerste rij is in de resultatenset. Als je wilt dat het begint bij 365, dan:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b
where id >= 365;