IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Problème avec une requête


Sujet :

SQL Oracle

  1. #1
    Provisoirement toléré
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Points : 76
    Points
    76
    Par défaut Problème avec une requête
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    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

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND exercice(+) ='2013'

  3. #3
    Provisoirement toléré
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Points : 76
    Points
    76
    Par défaut
    salut
    j'ai modifié ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT h.agt_matricule,h.agt_nom ||h.agt_prenom as nom ,h_structures.str_design,h_fonctions.fct_designation, CASE
       WHEN 30-SUM(t.pris) IS NULL THEN 30
       WHEN 30-SUM(t.pris)>0 then  30-SUM(t.pris)
       end david
    FROM récap t ,h_agent h,h_fonctions ,h_structures
    WHERE t.matricule (+) =h.agt_matricule    and h.agt_cstruct=h_structures.str_cstruct and  h.agt_cfonction=h_fonctions.fct_cfonction  and    h.agt_oper='1'  AND  t.exercice (+) = 2013 --OR t.exercice IS NULL)
    GROUP BY h.agt_matricule,h.agt_nom  ,h.agt_prenom,h_structures.str_design,h_fonctions.fct_designation
    je voudrais si trouve 30 - SUM(t.pris) =0 alors n'affiche pas la ligne mais cette condition affiche david vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHEN 30 - SUM(t.pris) > 0 then 30 - SUM(t.pris)

  4. #4
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CASE
    WHEN 30-SUM(t.pris) IS NULL THEN 30
    WHEN 30-SUM(t.pris)>0 then 30-SUM(t.pris)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    30-NVL(SUM(t.pris) ,0)
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  5. #5
    Provisoirement toléré
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Points : 76
    Points
    76
    Par défaut
    bonjour mais je veux pas que cette ligne s'affiche si résultat égal 0

  6. #6
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Rajouter en condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GROUP BY .......
    HAVING NVL(SUM(t.pris) ,0) >30
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  7. #7
    Provisoirement toléré
    Inscrit en
    Avril 2007
    Messages
    679
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 679
    Points : 76
    Points
    76
    Par défaut
    je voudrais garder la même raquette mais regrouper nombre des agent ayant des reliquats par département

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT
    h_structures.str_design,
    count (h.agt_matricule)as nbr
     
    FROM récap t, h_agent h,  h_structures
     
    WHERE t.matricule(+) = h.agt_matricule
       and h.agt_cstruct = h_structures.str_cstruct
     
       and h.agt_oper = '1'
       AND (t.exercice = 2013 OR t.exercice IS NULL)
     
    GROUP BY  h_structures.str_design
    mais si j'ajoute la condition "HAVING 30-SUM(t.pris) > 0 OR 30-SUM(t.pris) IS NULL"

    le département qui a des agents avec 30-SUM(t.pris )=0 n'affiche pas

Discussions similaires

  1. [TADOQuery] Problème avec une requête
    Par yannba dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/01/2006, 13h51
  2. Problème avec une requête
    Par demonark dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/09/2005, 05h35
  3. Problème avec une requête
    Par ringostarr dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/04/2005, 20h34
  4. Problème avec une requête
    Par snoopy69 dans le forum Débuter
    Réponses: 2
    Dernier message: 20/01/2005, 12h39
  5. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo