Bonjour à tous
Je reviens chercher de l'aide pour une requête sur laquelle je m'arrache les cheveux (et je n'en ai plus beaucoup !).
J'ai un fichier des examens de biologie de tous mes patients sur 2 ans avec date et heure des analyses (importé dans une table "Biologie" avec le champ Dateanalyse sous le format "dd/mm/aaaa hh:nn"). Nous les opérons et les patients (caractérisés par un numéro "Sigma" en format texte car il a un zéro devant) sont dans une table T_PremierPassageTemp (avec la date de cette intervention "DateChirurgie").
Je souhaite avoir la dernière valeur connue d'un examen biologique (en l'occurence "Hte") du patient avant sa chirurgie.
Cette requete est trop lente et ne ramène pas tous les patients.
Celle-ci est plus rapide mais ne ramène effectivement le patient que si la dernière analyse correspond à Hte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT T_PremierPassageTemp.SigmaOrder AS Sigma, T_PremierPassageTemp.NOM_PATIENT, T_PremierPassageTemp.DateChirurgie, DLast("[Dateanalyse]","Biologie","[Hte]>0 AND [NDA]='" & [Sigmaorder] & "'") AS DerniereAnalyse, IIf([Hte] Is Not Null,1,0) AS HteValide, Last(Biologie.Hte) AS DernierDeHte FROM T_PremierPassageTemp LEFT JOIN Biologie ON T_PremierPassageTemp.SigmaOrder = Biologie.NDA WHERE (((Biologie.Dateanalyse)<[DateChirurgie])) GROUP BY T_PremierPassageTemp.NIP, T_PremierPassageTemp.SigmaOrder, T_PremierPassageTemp.NOM_PATIENT, T_PremierPassageTemp.DateChirurgie, IIf([Hte] Is Not Null,1,0) HAVING (((IIf([Hte] Is Not Null,1,0))=1));
J'espère avoir été clair et serai heureux d'un petit (grand) conseil.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT T_PremierPassageTemp.NIP, T_PremierPassageTemp.SigmaOrder AS Sigma, T_PremierPassageTemp.NOM_PATIENT, T_PremierPassageTemp.DateChirurgie, IIf([Hte] Is Not Null,1,0) AS HteValide, Last(Biologie.Hte) AS DernierDeHte, Last(Biologie.Dateanalyse) AS DernierDeDateanalyse FROM T_PremierPassageTemp LEFT JOIN Biologie ON T_PremierPassageTemp.SigmaOrder = Biologie.NDA WHERE (((Biologie.Dateanalyse)<[DateChirurgie])) GROUP BY T_PremierPassageTemp.NIP, T_PremierPassageTemp.SigmaOrder, T_PremierPassageTemp.NOM_PATIENT, T_PremierPassageTemp.DateChirurgie, IIf([Hte] Is Not Null,1,0) HAVING (((IIf([Hte] Is Not Null,1,0))=1));
Partager