Trouver les trous dans des périodes sur la même table
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 :? :
Code:
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 |
Ca vous semble bon ?