Bonjour tout le monde,
Me voilà bloqué depuis quelques jours sur la mise en place d'une requête SQL.
J'exprime mon problème dans un premier temps et ensuite vous montre mon début de "code."
But: J'aimerais pour une entreprise connaître sa date de faillite qui correspond à la date la plus ancienne d'une série contiguë... :calim2:
Bon ok c'est pas clair du tout mais compliqué a expliquer par des mots.
J'ai une table me listant des entreprises issues de fichiers reçus une fois par jour. Une entreprise peut apparaître plusieurs fois (identifié par son numéro d'entreprise) si elle a été "reçue" dans plusieurs fichiers les jours précédents. Les fichiers portent des id et un fichiers plus récent à un id plus grand.
Une colonne indique si cette entreprise est en faillite ou pas. Valeur = B correspond à faillite sinon null.
Maintenant que les bases sont posées, je vous mets un exemple qui sera peut-être plus parlant sur la date que je souhaite remonter.
- Exemple 1:
IDEXCERPT (=Id du fichier) CH (=Identifiant entreprise) DATE_JOURNAL DIARYKINDOFENTRY (=Indicateur de faillite) Fichier 2019-12-01 EntrepriseToto 2019-12-01 B Fichier 2019-11-02 EntrepriseToto 2019-11-02 B Fichier 2019-10-03 EntrepriseToto (null) (null) Fichier 2019-09-04 EntrepriseToto 2019-09-04 B
Pour cette exemple 1, on remarque que l'entreprise Toto apparait 4 fois. Qu'elle a été en faillite dans le fichier du 04/09, ensuite pas de faillite dans le fichier du 03/10 et est en faillite depuis le fichier du 02/11.
=> On aimerait ici récupérer la date la plus ancienne de la série contiguë de faillite, à savoir la date du 2019-11-02
- Exemple 2:
IDEXCERPT (=Id du fichier) CH (=Identifiant entreprise) DATE_JOURNAL DIARYKINDOFENTRY (=Indicateur de faillite) Fichier 2019-12-01 EntrepriseToto (null) (null) Fichier 2019-11-02 EntrepriseToto 2019-11-02 B Fichier 2019-10-03 EntrepriseToto (null) (null) Fichier 2019-09-04 EntrepriseToto 2019-09-04 B
Pour cette exemple 2, la dernière information provenue du fichier le plus récent nous indique "pas de faillite" donc on doit récupérer la valeur null
- Exemple 3:
IDEXCERPT (=Id du fichier) CH (=Identifiant entreprise) DATE_JOURNAL DIARYKINDOFENTRY (=Indicateur de faillite) Fichier 2019-12-01 EntrepriseToto 2019-12-01 B Fichier 2019-11-02 EntrepriseToto 2019-11-02 B Fichier 2019-10-03 EntrepriseToto 2019-10-03 B Fichier 2019-09-04 EntrepriseToto 2019-09-04 B
Pour cette exemple 3, nous devons récupérer la date la plus ancienne de la série et comme elle a toujours été en faillite, nous devons récupérer 2019-09-04
Début de solution ?
J'ai tenter de créer quelque chose avec les fonctions LAG ou LEAD basé sur l'indicateur de faillite mais je n'arrive pas à gérer tous les cas....
J'avais écris quelque chose de la sorte:
J'ai donc tenté de mixer une clause CASE WHEN avec la fonction LAG ou LEAD mais sans succès.Code:
1
2
3
4
5
6
7
8
9
10
11 select IDEXCERPT, CH, DATE_JOURNAL, DIARYKINDOFENTRY, case when DIARYKINDOFENTRY is null then null when lag(DIARYKINDOFENTRY,1) over (partition by CH order by IDEXCERPT DESC) = DIARYKINDOFENTRY then DATE_JOURNAL else null end LAST_DATE from ee_rc_excerpt_v3 where CH = 'EntrepriseToto';
Totalement bloqué depuis...
Merci pour vos lumières car je ne vois pas du tout comment faire maintenant :oops: