Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
flochi75
Creator III
Creator III

Tester présence dans un meme champ la présence conjointe de 2 valeurs pécises

Bonjour,

je m'explique :

j'ai par champ [IEP] plusieurs valeurs dans le champ [LC].

Je voudrais tester la présence de 2 valeurs particulières s'il y a présence d'1 valeur précise.

Je donne le cas précis : 

pour tous les [IEP] qui ont "B" dans [LC], je voudrai vérifier la présence de [SMI] ou [SFI] dans ce même champ [LC].

je joins un fichier avec ces 2 champs.

Merci pour votre aide

 

3 Replies
dtronel
Contributor III
Contributor III

Bonjour

Puis-je reformuler sous la forme : Recherche des IEP ayant soit (LC=B et LC=SMI), soit (LC=B et LC=SFI) ?

Si oui, un simple  :

Load distinct IEC from TABLE where ((LC='B' and LC='SMI') or (LC='B' and LC='SFI'))

devrait suffire...

Cdlmt

dtronel
Contributor III
Contributor III

En fait ce n'est pas très "propre". Pour "mieux" répondre à la question, il faut savoir si tu cherches un résultat uniquement des IEP répondant à la condition ou bien + de détail (du genre : Lesquels ont B+SFI et/ou lesquels ont B+SMI) ?

Autre question : le choix des LC à tester est-il à faire en dur dans un script ou bien doit-il être à l'initiative de l'utilisateur en mode graphique ? et si oui, le choix est-il à limiter à B+2 valeurs ? ou bien B+'N' valeurs ? ou bien la liste des IEC doit être affichée sur n'importe quelle sélection de 'N' LC ?

Si la question est juste "B+SFI ou B+SF" (j'ai changé car la table ne contient PAS de SMI et le choix de SF permet de voir les IEP ayant soit que B+SF ou B+SFI ou B+SF+SFI...) alors le petit script ci-dessous donne une réponse :

IN:
LOAD
     IEP,
     LC
FROM [IEP_LC.xlsx] (ooxml, embedded labels, table is Sheet1);
 
OUT:
Load distinct
     IEP,
     IEP as IEP_B
RESIDENT IN where (LC='B');
 
left join load distinct
     IEP as IEP_B,
     true() as IEP_B_SFI
RESIDENT IN where (LC='SFI');
 
left join load distinct
     IEP as IEP_B,
     true() as IEP_B_SF
RESIDENT IN where (LC='SF');
 
inner join load
     IEP_B,
     if(isnull(IEP_B_SFI),'B+SF',if(isnull(IEP_B_SF),'B+SFI','B+SF+SFI')) as IEP_B_Flag
resident OUT
where not(isnull(IEP_B_SFI) and isnull(IEP_B_SF));

 

flochi75
Creator III
Creator III
Author

Merci Dtronel pour ton retour.

Effectivement, je dois préciser ma demande.

Il faut que lors de la présence de B qu'il y ait soit 1 AMI (et non SMI, faute de frappe...) soit 1 SFI (mais pas SF).

Je veux pouvoir identifier tous les IEP qui n'ont pas le AMI ou SFI avec le B.

Cela peut être fait "en dur" en script, il n'y a pas d'autre choix.

Merci.