Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour, j'ai une table qui contient une liste d'individu venus passer des examens de santé.
Chaque individu peut avoir suivi un ou plusieurs examens de santé.
J'aimerais trouver la date de l'avant dernier examen de santé.
Avec Above, j'obtient la liste de tous les examen avec la date de l'examen récent (DATE_EXAMEN) et tous les examens précédents (DATE_EXAMEN_PRECEDENT).
NIND | NTI | DATE_EXAMEN | DATE_EXAMEN_PRECEDENT |
2346378 | 5016788 | 05/01/2015 | 10/06/1997 |
2346378 | 5016788 | 05/01/2015 | 14/02/2003 |
2346378 | 5016788 | 05/01/2015 | 24/07/2009 |
2346378 | 5016788 | 05/01/2015 | 06/08/2010 |
2346378 | 5016788 | 05/01/2015 | 20/09/2011 |
2346378 | 5016788 | 05/01/2015 | 16/10/2012 |
2346378 | 5016788 | 05/01/2015 | 03/12/2013 |
2346378 | 5016788 | 05/01/2015 | 05/01/2015 |
Or j'aimerais ne récupérer qu'une seule ligne par individus, avec la date du dernier examen (le plus récent donc) et la date de l'examen précédent.
En passant par un load en 2 temps, j'obtient bien ce que je veux, mais comment puis je faire en une passe à l'aide des fonction prvious ou peek ?
Pour le moment, peek et previous dans le load mais ces fonctions me renvoient l'avant dernière date d'examen de toute la table.
See below:
Data:
load *
inline [
Nind,NTI,DATE_EXAMEN, DATE_EXAMEN_PRECEDENT
2346378, 5016788, 05/01/2015, 10/06/1997
2346378, 5016788, 05/01/2015, 14/02/2003
2346378, 5016788, 05/01/2015, 24/07/2009
2346378, 5016788, 05/01/2015, 06/08/2010
2346378, 5016788, 05/01/2015, 20/09/2011
2346378, 5016788, 05/01/2015, 16/10/2012
2346378, 5016788, 05/01/2015, 03/12/2013
2346378, 5016788, 05/01/2015, 05/01/2015
]
;
temp:
load
Nind as NIND,
NTI AS nti,
DATE_EXAMEN as DateExam,
Max(DATE_EXAMEN_PRECEDENT)as Last,
Max(DATE_EXAMEN_PRECEDENT,2)as SecondLast
resident Data
Group by
Nind,
NTI,
DATE_EXAMEN;
drop table Data;
Nice ! Thank you.
I am trying this but it is not working ... 😕
TBLCHB:
LOAD NTI,
NIND,
DATE_EXAMEN,
max(DATE_EXAMEN) AS MAX_DATE_EXAMEN,
max(DATE_EXAMEN,2) AS DATE_EXAMEN_PRECEDENT
FROM $(ENTREPOT)TBLCHB.QVD (qvd)
where MATCH(ANTENNE,4,7)=0
and match(if(not IsNull(ORIGINE),ORIGINE,'-'),'TBC','OMI','STB','CST')=0
GROUP BY NTI, NIND, DATE_EXAMEN;
Is it possible to do it directly when loading the table ?
Because that is what I am doing and ...
😕