1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| with sr1 (nom, prenom, societe, status, date, grp) as
(
select nom, prenom, societe, status, date
, rank() over(partition by nom, prenom, societe order by date asc)
- rank() over(partition by nom, prenom, societe, status order by date asc)
from matable
)
, sr2 (nom, prenom, societe, status, date, grp, dt_min) as
(
select nom, prenom, societe, status, date
, grp
, min(date) over(partition by grp, status)
from sr1
)
select nom, prenom, societe, status, date
, row_number() over(partition by grp, dt_min order by date asc) as rnum
, dense_rank() over(order by grp asc, dt_min asc) as pnum
from sr2
order by date asc, status;
NOM PRENOM SOCIETE STATUS DT RNUM PNUM
---- ------ -------------- ------- ---------- ---------- ----------
MARC LOUIS AdventureWorks PRESENT 2014-09-01 1 1
MARC LOUIS AdventureWorks PRESENT 2014-09-02 2 1
MARC LOUIS AdventureWorks ABSENT 2014-09-03 1 2
MARC LOUIS AdventureWorks ABSENT 2014-09-04 2 2
MARC LOUIS AdventureWorks ABSENT 2014-09-05 3 2
MARC LOUIS AdventureWorks PRESENT 2014-09-06 1 3
MARC LOUIS AdventureWorks ABSENT 2014-09-07 1 4
MARC LOUIS AdventureWorks ABSENT 2014-09-08 2 4
MARC LOUIS AdventureWorks ABSENT 2014-09-08 3 4 |
Partager