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 LISTAGG


Sujet :

SQL Oracle

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut Problème avec LISTAGG
    Bonjour,

    J'ai besoin d'utiliser la fonction analytique LISTAGG mais ça ne marche pas.

    J'ai des agents avec chacun des aptitudes.

    ID_AGENT ID_EMPLOI
    1 A45
    1 A88
    1 A12
    1 B78
    2 A12
    2 A88

    Je voudrais:

    ID_AGENT ID_EMPLOI
    1 A12, A45, A88, B78
    2 A12, A88


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Select ID_AGENT,
     LISTAGG(ID_EMPLOI, ',') WITHIN GROUP (ORDER BY ID_EMPLOI)
     FROM EMPLOI where ANNEE_MOIS=201706
     group by ID_AGENT;
    Mon script semble pourtant bon mais j'ai toujours le message d'erreur suivant :

    ORA-00923: mot-clé FROM absent à l'emplacement prévu
    00923. 00000 - "FROM keyword not found where expected"
    *Cause:
    *Action:
    Erreur à la ligne 10, colonne 28

    Avez vous une idée d'où ça peut venir?

  2. #2
    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
    Bonjour,

    Quelle version de base de données ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Après le LISTAGG je mettrais un alias pour voir.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut
    @McM : je suis en V11 SR2. Donc normalement c'est bon puisque cette fonction existe à partir de V11 SR2 et V12

    @Ikebukuro : j'ai essayé en aliasant et ça ne change rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Select ID_AGENT,
     LISTAGG(ID_EMPLOI, ',') WITHIN GROUP (ORDER BY ID_EMPLOI) as EMPLOI_2
     FROM EMPLOI where ANNEE_MOIS=201706
     group by ID_AGENT;

  5. #5
    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
    Alors le problème est autre, j'ai testé sur une base 11.2 aucun problème, même avec un sql +8

    As-tu essayé d'exécuter seulement la requête ?
    L'erreur est "Erreur à la ligne 10, colonne 28 " : Quel est le script complet et comment est-il lancé ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut
    Oui, je lance bien sous SQL Developper uniquement la requête. Je fais Ctrl+Entrée mais là je viens pour être sûr de relancer avec uniquement les lignes de la requête présentes sur ma feuille de calcul.

  7. #7
    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
    Ca a fonctionné ou tu as un message (si oui, quel est-il ?) ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut
    Non, malheureusement ca ne fonctionne pas.

    Il me met (je n'ai que les 4 lignes de SQL sur la feuille) :

    ORA-00923: mot-clé FROM absent à l'emplacement prévu
    00923. 00000 - "FROM keyword not found where expected"
    *Cause:
    *Action:
    Erreur à la ligne 2, colonne 33

    Quand il fait référence à la ligne 2, c'est donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     LISTAGG(ID_EMPLOI, ',') WITHIN GROUP (ORDER BY ID_EMPLOI)
    et colonne 33 je suppose que ça doit être le 33 ieme caractère, à savoir le O de GROUP. Ca m'avance pas trop

  9. #9
    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
    Colonne 33 ..en effet c'est le mot GROUP (tu as un espace devant LISTAGG)

    Donc c'est qu'il ne reconnait pas LISTAGG qu'il prend pour une fonction avec le Within en tant qu'alias.
    Que donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT VERSION FROM V$INSTANCE
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  10. #10
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT VERSION FROM V$INSTANCE
    me met

    ORA-00942: Table ou vue inexistante
    00942. 00000 - "table or view does not exist"
    *Cause:
    *Action:
    Erreur à la ligne 2, colonne 21

  11. #11
    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
    Tu n'as pas le role select_catalog_role,

    V$VERSION ou PRODUCT_COMPONENT_VERSION sont accessibles par PUBLIC, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM PRODUCT_COMPONENT_VERSION;
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  12. #12
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut
    Ca me retourne


    Nom : Oracle_version.jpg
Affichages : 1250
Taille : 23,4 Ko

    Ca voudrait dire que je suis en V10, et non pas en V11 R2? ca expliquerait le problème.

  13. #13
    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
    Eh oui tu es en 10.2.0.4
    Donc pas de LISTAGG
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  14. #14
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut
    C'est pas bien de se moquer

  15. #15
    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
    String Aggregation Techniques - vous allez trouver certainement une méthode convenable pour votre environnement.

  16. #16
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut
    @mnitu : Un très grand merci pour cette fonction WM_CONCAT. Ca marche très bien même si on ne peut pas trier. Ca tombe bien j' avais pas besoin du tri.

    Sur un autre site c'est bien précisé que c'est une fonction non supportée et non documentée qui ne devrait pas utilisée être en PROD. Mais seul le résultat compte

    Note that WM_CONCAT is undocumented and unsupported by Oracle, meaning it should not be used in production systems.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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