Problème avec une requette

ulysse00 Messages postés 291 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 12 mai 2013 - 12 mai 2013 à 19:24
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 13 mai 2013 à 21:03
Bonjour

Je bloque sur une requête SQL
j'ai deux table , le première 'agent' et la deuxième 'récap'
je veux gérer les congés

table récap
matricule | pris | exercice
1145 | 10 | 2013
9877 | 5 | 2013
9877 | 4 | 2013
9877 | 3 | 2012
table agent
matricule |nom
1145 david1
9877 david2
102 david3
109 david4
je cherche à afficher
matricule |nom |reste
1145 |david1 | 20
9877 |david2 | 21
102 |david3 | 30
109 |david4 | 30
voila ma requête

SELECT h.agt_matricule,h.agt_nom,exercice,CASE
WHEN h.agt_matricule IS NOT NULL THEN 30-sum(t.pris)
WHEN h.agt_matricule IS NULL THEN NVL (30-sum(t.pris),30)
end david
FROM récap t ,h_agent h
WHERE t.matricule (+) =h.agt_matricule AND h.agt_oper='1' AND exercice ='2013'
GROUP BY h.agt_matricule,h.agt_nom ,exercice


cette requête affiche comme résultat
matricule |nom |exercice | david
1145 |david1 | 2013 | 20
9877 |david2 | 2013 | 21


mais les autres agents n'affichent pas david3 et david4

Merci d'avance

1 réponse

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
13 mai 2013 à 21:03
Salut,

j'aurais inversé les tables car c'est récap qui est en jointure externe gauche, du coup le case ne sert a rien

SELECT 
    h.agt_matricule,
    h.agt_nom,
    exercice,
    30 - sum( NVL(t.pris,0) ) david 
FROM h_agent h, récap t
WHERE  h.agt_matricule (+)= t.matricule
    AND h.agt_oper='1' AND exercice ='2013' 
GROUP BY h.agt_matricule,h.agt_nom, exercice 


pas testé, mais ça me parait correct.

bye...
0
Rejoignez-nous