Bonjour.
J'ai un problème qui ressemble à celui-ci.
Je dois trouver les trous dans la continuité temporelle entre les différentes lignes d'une table, sur la même colonne.
Structure simplifiée de la table 'detentions' :
- B_D_FK_IND_BOVINS : l'identifiant du bovin
- B_D_DAT_ENTR : la date d'entrée dans une exploitation, de type DATE
- B_D_DAT_SORT : la date de sortie de l'exploitation, de type DATE
Normalement, les différentes détentions d'un bovins devraient se suivre avec au maximum 1 jour entre la date de sortie d'une détention et la date d'entrée de la détention suivante.
On cherche à compter le nombre de bovins pour lesquels il y a des trous entre les dates de sortie et les dates d'entrée de la détention suivante.
J'ai fait la requête suivante qui me donne un résultat mais je ne suis pas sûr de moi sur ce coup:
Ca vous semble bon ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT COUNT(DISTINCT d1.B_D_FK_IND_BOVINS) AS NbBovins FROM bdni2.detentions d1 WHERE DATEDIFF( (SELECT d2.B_D_DAT_ENTR FROM bdni2.detentions d2 WHERE d2.B_D_FK_IND_BOVINS = d1.B_D_FK_IND_BOVINS AND d2.B_D_DAT_ENTR > d1.B_D_DAT_ENTR ORDER BY d2.B_D_DAT_ENTR LIMIT 1), d1.B_D_DAT_SORT) > 1
Partager