Bonjour,
Je m'arrache les cheveux depuis plusieurs jours pour trouver une solution au problème que je vais vous présenter.
Je souhaite reconstituer les périodes d'absences des salariés.
Ma table T2 :
id -> identifiant du salarié
date_abs -> jour d'absence
code_abs -> motif de l'absence
J'ai cherché un peu partout ; j'ai trouvé un peu d'aide mais mon résultat est toujours faux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 id ; date_abs ; code_abs 1 ; 20130101 ; 101 1 ; 20130102 ; 101 1 ; 20130103 ; 101 1 ; 20130201 ; 145 1 ; 20130202 ; 145 1 ; 20130203 ; 145 1 ; 20130204 ; 145 2 ; 20130101 ; 101 2 ; 20130102 ; 101
Voici mon code :
Je voudrais reconstituer la période d'absence avec une date de début et une date de fin par salarié et motif d'absence. Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 SELECT id, min(date_abs) AS dtdeb, MAX(date_abs) AS dtfin, code_abs, COUNT(*) AS nbjr FROM ( SELECT id, date_abs, code_abs, ROW_NUMBER() over(ORDER BY date_abs ASC) - ROW_NUMBER() over(partition BY code_abs ORDER BY date_abs ASC) AS grp FROM t2 ) GROUP BY id, code_abs, grp ORDER BY id, dtdeb
Je vous remercie d'avance de m'apporter votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 id; dtdeb;dtfin;code_abs 1;20130101;20130103;101
Partager