Dus je wilt reeksen vinden op basis van de datum die hetzelfde zijn.
Hier is een truc:als je het verschil tussen row_number()
. neemt over de hele groep en row_number()
gepartitioneerd door code
, dan is het constant voor aangrenzende rijen met dezelfde code. De rest is gewoon aggregatie:
select min(date), max(date), code
from (select t.*,
(row_number() over (order by date) -
row_number() over (partition by code order by date)
) as grpid
from followingdata t
) t
group by grpid, code;