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

PL/SQL Oracle Discussion :

probleme avec group by dans un bloc anonyme


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Points : 40
    Points
    40
    Par défaut probleme avec group by dans un bloc anonyme
    salut a tous, je dispose d`une table ligne(=ligne telephone) ayant pour champs:
    (numligne,idclient,datechargement,montant disponible,etat,dateepuisement)
    pour un traitement specifique qui a pour but de me retourner les clients qui ont exactement 2 lignes seulement, l`une a l`etat Normal "N" et l`autre a l`etat bloquee "B", alors je fesais comme ca:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select IDCLIENT,numligne,etat from ligne 
    group by numligne
    having Etat IN('B','N');
    mais j`obtiens une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-00979:N`est pas une expression group by
    merci pour vos suggestions

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select idclient from
    (
    SELECT IDCLIENT,sum(decode(etat,'B',1,0)) etat_b,sum(decode(etat,'N',1,0)) etat_n FROM ligne 
    GROUP BY idclient
    )
    where etat_b=1 and etat_n=1

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Il y a plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    WITH Ligne AS (
    		SELECT 1 idclient, 'B' etat FROM dual
    UNION ALL SELECT 1 idclient, 'N' etat FROM dual
    UNION ALL SELECT 2 idclient, 'N' etat FROM dual
    UNION ALL SELECT 2 idclient, 'N' etat FROM dual
    UNION ALL SELECT 2 idclient, 'B' etat FROM dual
    UNION ALL SELECT 3 idclient, 'A' etat FROM dual
    )
    SELECT IDCLIENT
    FROM LIGNE 
    GROUP BY idclient
    HAVING MIN(etat) = 'B' AND MAX(etat) = 'N'
    AND COUNT(*) = 2
     
    IDCLIENT
    1

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/03/2006, 19h51
  2. Réponses: 2
    Dernier message: 10/10/2005, 02h25
  3. [Système]Probleme avec un chemin dans cmd.exe
    Par Sarrus dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 14/09/2005, 08h31
  4. Réponses: 11
    Dernier message: 12/04/2005, 14h08
  5. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32

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