Bonjour à tous,
Je bloque sur une problématique où je ne trouve pas de solution élégante et pérenne.
J'ai une table de fait avec par salarié, la date de début d'absence (DateDebutAbsence), la date de fin d'absence (DateFinAbsence).
J'aurais souhaité faire une analyse dans une table d’agrégat des absences en les analysants par année. Exemple: Savoir que le salarié X à été absent 10 jours en 2013 et 23 en 2014.
Quand l'année de la date de début et de fin sont les mêmes, c'est pas compliqués, j'ai un case when et je fais un DateDiff (en sommant ensuite si il y en a eu plusieurs dans la même année)
Ca se complique quand l'année est différente (absence de plusieurs années). J'avais pensé à ajouter une ligne supplémentaire par Différence d'année pour chaque salarié (Exemple: Salarié Toto absent du 10/02/2013 au 05/01/2014 aura deux lignes dans l'agrégat: Toto/2013/325 et Toto/2014/10). Mais je suis persuadé qu'il y a plus élégant comme solution
J'ai une méthode qui consisterait à utiliser les curseurs mais ca va être une jolie usine à gaz (sans parler de l'instabilité)
Deux problématiques se posent à moi:
- Comment résoudre le problème de l'absence à cheval sur deux dates?
- La datediff que je fais entre mes absences prends en compte des fausses absences, comme les week ends. Comment puis je faire pour ne pas les considérer si ce n'est en soustrayant par le nombre correspondant à (2 * le plus grand facteur de 7)
Si certains se sont déjà cassés les dents sur ce sujet, je suis preneur : )
Merci et bonne journée !
Partager