|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Bonjour
Je cherche dans un premier temps à compter les occurrences d'un CODE dans une liste, disons ('X','Y','Z') et une liste ('K','L','M') ainsi que lorsque le code n'appartient à aucune liste: Code SQL :
Cela m'affiche: -NUM_DOSSIER -NOM- -CODE_DU_FORFAIT_A- -CODE_DU_FORFAIT_B- -CODE_HORS_FORFAIT avec dans chaque colonne le nombre d'occurrences Je voudrais maintenant, sur ces critères avoir la chose suivante: -Sachant que si pour un NOM et un NUM_DOSSIER donné: Au moins une occurrence d'un code de la liste ('K','L','ZM) donne obligatoirement un FORFAIT_B, ce quelquesoit la présence ou non d'autres codes de l'autre liste ou n'appartenant à aucune liste -Sachant que la présence d'au moins un CODE de la liste ('X','Y','Z') mais SANS AUCUNE occurrence de code de la liste ('X','Y','Z') donne un FORFAIT_A -Dans les autres cas, un code n'appartenant à aucun CODE des 2 listes: ('K','L','M','X','Y','Z') donne ABSENCE_DE_FORFAIT Je veux afficher les colonne de la façon suivante: -NUM_DOSSIER -NOM- -TYPE_FORFAIT Comment faire? Merci de vos réponses |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Pourriez vous poster la DDL de vos tables, et surtout un jeu d'essai avec le résultat attendu, afin de mieux comprendre votre besoin merci |
|
|
00
|
|
|
#3 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
d'autre part,
n'y a-t-il pas une erreur dans : Citation:
"-Sachant que la présence d'au moins un CODE de la liste ('X','Y','Z') mais SANS AUCUNE occurrence de code de la liste ('K','L','M'') donne un FORFAIT_A" |
|
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bon
si j'ai bien compris votre problème, cette requête doit vous donner le résultat attendu (pas testée): Code SQL :
A noter qu'un CASE WHEN "s’arrête" dès qu'il a "trouvé" un prédicat vrai. C'est pourquoi dans la deuxième ligne (forfait A) je ne tiens pas compte de l'exclusion de la liste du forfait A, car s'il y avait l'un de ces codes, la première ligne "forfait B" serait avérée, et la deuxième ligne "forfait A" ne serait alors même pas évaluée. De même pour la suite oùje n'effectue aucune vérification, car si j'ai bien compris, on est hors forfait si l'on n'est ni en forfait A, ni en forfait B |
||
|
|
00
|
|
|
#5 | |
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Oups il y a en bien une erreur
Citation:
--Sachant que si pour un NOM et un NUM_DOSSIER donné: Au moins une occurrence d'un code de la liste ('K','L','M) donne obligatoirement un FORFAIT_B, ce quelquesoit la présence ou non d'autres codes de l'autre liste ou n'appartenant à aucune liste -Sachant que la présence d'au moins un CODE de la liste ('X','Y','Z') mais SANS AUCUNE occurrence de code de la liste ('K','L','M') donne un FORFAIT_A -Dans les autres cas, un code n'appartenant à aucun CODE des 2 listes: ('K','L','M','X','Y','Z') donne ABSENCE_DE_FORFAIT En pratique j'avais simplifié voici une copie de ce que j'obtiens: |
|
|
|
00
|
|
|
#6 |
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Ce que je voudrais obtenir est:
|
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
En fait dans le 1er tableau, j'aimerais éviter de basculer dans EXCEL et faire un ET(SI.... et avoir juste la réponse sans le détail du calcul, puisqu'évidemment, il y a des milliers de lignes concernées..
|
|
|
00
|
|
|
#8 | ||
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Bonjour et un peu tardivement...MERCI
En fait mon problème venait du CASE WHEN car j'ignorais pourquoi en effet il s'arrêtait lorsqu''il' avait trouvé un prédicat VRAI. je croyais à une erreur de syntaxe de ma part.. Par contre votre requête est -APPAREMMENT Code sql :
Si cette requête est VRAIMENT équivalente (elle semble l'être sur mes données) y-a t'il un avantage quelquonque à choisir une syntaxe plutôt qu'une autre? Merci |
||
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Médecin Département d'Information Médicale (DIM) Inscription : janvier 2009 Messages : 77 ![]() |
Et comment compter le nombre de dossiers avec un FORFAIT_A et ceux avec un FORFAIT_B et ceux hors forfaits avec le CASE...WHEN
et non pas calculer le nombre d'actes par forfaits (ça j'y arrive mais cela ne me sert à rien) En clair je voudrais le Nombre de NUM_DOSSIERS donnant tel ou tel Forfait: ex: Forfait_A: 15 NUM_DOSSIERS (peu importe le nombre d'actes éligibles à ce forfait) Forfait_B: 10 NUM_DOSSIERS (peu importe le nombre d'actes éligibles à ce forfait) et non pas Forfait_A: 123 Actes donnant ce forfait (par exemple) Forfait_B: 42 Actes donnant ce forfait Bon j'ai l'impression de ne pas forcément être trés clair Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com