Bonjour,

J'ai un problème avec une requête que je n'arrive pas à faire.
Mon besoin est le suivant :

Dans un contexte métier lié à la paie je souhaiterai regrouper des montants en fonction de plusieurs critères/dates.
Les paramètres d'entrés sont une date de début @DATE_DEBUT et une date de fin @DATE_FIN qui définisse une période (une année fiscale)
J'ai besoin de récupérer des montants retro (dont la date de paie et la date d'allocation sont différentes ) qui sont antérieur à cette période mais dont la paie est calculée sur la période en cours (définit par les 2 paramètres)
Je dois également regrouper séparément les montants retro sur la période en cours si MIN(DATE_ALLOC) < DATE_DEBUT, donc si la date d'allocation la plus ancienne est antérieur à la période en cours.

La requête peut se décomposer en 2 sous requêtes je pense :

La première retourne des montants retro < DATE_DEBUT

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
select ID_HR,OR_HR,SUM(MONTANT_A),SUM(MONTANT_B), CRITERE A, CRITERE B
from TABLE A
where DATE_ALLOC <> DATE_PAIE
and DATE_PAIE >= @DATE_DEBUT
and DATE_PAIE <= @DATE_FIN
and DATE_ALLOC < @DATE_DEBUT
GROUP BY ID_HR,OR_HR, CRITERE_A, CRITERE_B
la deuxième retourne les montants retro sur la période en cours SEULEMENT si le MIN(DATE_ALLOC) < DATE_DEBUT

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
select ID_HR,OR_HR,SUM(MONTANT_A),SUM(MONTANT_B), CRITERE A, CRITERE B
from TABLE A
where DATE_ALLOC <> DATE_PAIE
and DATE_PAIE >= @DATE_DEBUT
and DATE_PAIE <= @DATE_FIN
and DATE_ALLOC >= @DATE_DEBUT 
AND MIN(DATE_ALLOC) < @DATE_DEBUT
GROUP BY ID_HR,OR_HR, CRITERE_A, CRITERE_B
Alors évidement la requête n'est pas correct et il n'est pas possible de mettre un MIN dans un where mais c'est juste pour illustrer le besoin.

Merci d'avance si quelqu'un peut m’éclairer.