Bonjour !
Après avoir fait une petite recherche, mais n'ayant pas trouvé mon bonheur, je me permets de vous adresser ma question.
Je possède une BDD avec des utilisateurs, qui possèdent un matricule. A ces utilisateurs il arrive des évènements (maladie, congé, etc) qui ont une date de début et une date de fin.
Seulement, dans certains cas, un évènement est rallongé. Par exemple un congé parental peut-être rallongé d'un mois, et dans ce cas je me retrouve avec deux lignes du type :
Matricule : AAA --- Début : 01/01/2016 --- Fin : 01/02/2016
Matricule : AAA --- Début : 01/01/2016 --- Fin : 01/03/2016
Du coup, lorsque j'essaie de faire ma somme d'absence, et bien pour cette personne là je vais compter qu'il a été absent 1 mois + 2 mois (soit 3 mois) alors que dans les faits il n'a été absent que 2 mois. Un rallongement peut aussi arriver plus d'une fois.
Ainsi, j'aimerais trouver un moyen qui me permette de faire une condition comme celle si : "Si le matricule et la date de début sont la même, alors (si la date de fin est la plus haute parmi ceux là, afficher durée, sinon afficher 0) sinon afficher durée".
En gros, on cherche tout ceux qui ont le même matricule et la même date de début, entre eux on cherche celui avec la date de fin la plus haute, et dans sa ligne on y attribue la durée (60 pour 2 mois par exemple), pour ceux dont la date de fin est inférieur on y indique 0 (comme ça lorsque je fais la somme de toutes les lignes ça ne comptera que les durées les plus longues) et enfin, pour les évènements qui n'ont pas le même matricule et la même date de début, on écrit la durée dans leur ligne (le cas de base où il n'y a aucun rallongement).
Seulement je ne sais pas du tout comment faire ça, je pense qu'il faut comparer chaque ligne du tableau avec toutes les autres lignes du tableau (pas avec elle-même car sinon la condition sera toujours vraie), et je ne sais pas faire.
Si vous savez comment faire, par n'importe quel moyen ce serait génial !
Merci.
Partager