Bonjour à tous,

Je dois sortir une liste d'heures à valoriser suite aux pointage des salariés.
On paye en premier les Heures sup (HSUP) car le plus favorable pour le salarié
puis on paye les heures majorées, par ordre d'application si il en reste par rapport aux heures sup payées. Il faut à chaque niveau décrémenter le compteur d'heures sup.
ci dessous ma requête sql de test et d'exemple qui contient les explications. Je sens bien qu'il faut utiliser la récursivité mais, malgré la lecture du tuto de Frédéric Brouard, je ne m'en sors pas ! d'autant qu'il faut décrémenter au fur et à mesure une valeur.

Je sais pas si mon problème est clairement exposé, à votre disposition pour toute explication nécessaires ...

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
SELECT ID_SALARIE, TYPE, NOMBRE, ORDRE
INTO #T2
FROM
(SELECT 'TOTO' AS ID_SALARIE, 'HSUP' AS TYPE, 2 AS NOMBRE, 0 AS ORDRE
UNION
SELECT 'TITI' AS ID_SALARIE, 'HSUP' AS TYPE, 12 AS NOMBRE, 0 AS ORDRE
UNION
SELECT 'TOTO' AS ID_SALARIE, 'NUIT' AS TYPE, 12 AS NOMBRE, 1 AS ORDRE
UNION
SELECT 'TOTO' AS ID_SALARIE, 'POSTE' AS TYPE, 6 AS NOMBRE, 2 AS ORDRE
UNION
SELECT 'TITI' AS ID_SALARIE, 'NUIT' AS TYPE, 5 AS NOMBRE, 1 AS ORDRE
UNION
SELECT 'TITI' AS ID_SALARIE, 'POSTE' AS TYPE, 9 AS NOMBRE, 2 AS ORDRE
UNION
SELECT 'TITI' AS ID_SALARIE, 'SA' AS TYPE, 4 AS NOMBRE, 3 AS ORDRE
) as src
 
 
 
select * from #T2
 
--la logique : On paye en premier les Heures sup (HSUP) car le plus favorable pour le salarié
--puis on paye les heures majorées, par ordre d'application si il en reste par rapport aux heures sup payées. Il faut à chaque niveau décrémenter le compteur d'heures sup
 
--le resultat que je veux obtenir
-- TOTO
---- HSUP 2
---- NUIT 10  (12 - 2 de HSUP)  compteur d'heure sup = 0
---- POSTE 6 (en totalité car il ne reste plus d'heure sup)
 
-- TITI
---- HSUP 12
---- NUIT 0 (car les 5 de NUIT sont déjà inclus en totalité dans les HSUP)  compteur d'heure sup = 7 (12-5)
---- POSTE 2 (9 - 7 car sur les 9, 7 sont pris sur les HSUP restantes 
---- SA 4
 
 
DROP TABLE #T2