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 :

Identificateur non valide ORA-00904 [11g]


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Clavardeur en tout genre
    Inscrit en
    Août 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Clavardeur en tout genre

    Informations forums :
    Inscription : Août 2019
    Messages : 64
    Par défaut Identificateur non valide ORA-00904
    Bien le bonjour à tous,

    Je tente de faire la somme de deux requêtes.

    Le but étant de faire la somme des interventions en fonction de la date d'appel da_ap et celui qui les a crée wo_user_creator sur deux tables différentes, En_cours et Archive, afin d'avoir le total des interventions créées par les deux techniciens en par rapport au numéro de semaine.

    Je crois comprendre le message d'erreur, "Da_ ap" n'est pas retrouvé dans le SELECT permettant de faire la somme mais malgré plusieurs tentatives et essais je ne vois pas comment résoudre la problématique.
    Pourriez vous éclairer ma lanterne ?

    D'avance merci.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    SELECT
       sum(inter) 
    FROM
       (
          SELECT
             TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IW'),
             TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IYYY'),
             COUNT(nu_int) AS inter 
          FROM
             en_cours 
          WHERE
             (
                wo_user_creator = 'TECH1' 
                OR wo_user_creator = 'TECH2'
             )
             AND TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IYYY') = '2023' 
          UNION ALL
          SELECT
             TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IW'),
             TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IYYY'),
             COUNT(nu_int) AS inter 
          FROM
             Archive 
          WHERE
             (
                wo_user_creator = 'TECH1' 
                OR wo_user_creator = 'TECH2'
             )
             AND TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IYYY') = '2023' 
       )
    GROUP BY
       TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IW')

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 608
    Billets dans le blog
    10
    Par défaut
    la requête principale ne demande que la somme, ce faisant, le GROUP BY n'a rien à faire ici, ou alors il faut ajouter la colonne du GROUP BY dans le SELECT.

  3. #3
    Membre confirmé
    Homme Profil pro
    Clavardeur en tout genre
    Inscrit en
    Août 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Clavardeur en tout genre

    Informations forums :
    Inscription : Août 2019
    Messages : 64
    Par défaut
    Merci pour ta réponse.

    Lorsque je rajoute la colonne duGROUP BY dans le SELECT j'ai le même message d'erreur.
    Lorsque je rajoute Da_ap dans le SELECT idem. J'avoue ne pas comprendre.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 608
    Billets dans le blog
    10
    Par défaut
    il faut donner un alias à la requête corrélée et aux colonnes restituées

    Exemple :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    with T1 (c1, c2) as
        (select 1, 'toto' from dual union all
         select 2, 'truc' from dual union all
         select 3, 'toto' from dual union all
         select 4, 'xxxx' from dual
        )
    select YY
         , sum(XX)
    from (select c2 as YY
               , c1 as XX
         from T1)  subq
    group by YY

    subq est l'alias de la table corellée, XX et YY sont les alias des colonnes restituées

  5. #5
    Membre confirmé
    Homme Profil pro
    Clavardeur en tout genre
    Inscrit en
    Août 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Clavardeur en tout genre

    Informations forums :
    Inscription : Août 2019
    Messages : 64
    Par défaut
    ok merci pour la piste de travail, il me reste qu' à appréhender tout cela.

    Merci pour ton temps

  6. #6
    Membre confirmé
    Homme Profil pro
    Clavardeur en tout genre
    Inscrit en
    Août 2019
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Clavardeur en tout genre

    Informations forums :
    Inscription : Août 2019
    Messages : 64
    Par défaut
    Merci encore Escartefique j'ai essayé d'utiliser ta réponse mais je ne vois pas comment cela me dépasse visiblement.
    Ceci dit cela m' amené à une autre approche qui est fonctionnelle, je suis pas loin de ton exemple.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    WITH RequeteTotale AS (
        SELECT  
            TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IW') AS Semaine,
            TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IYYY') AS annee,
            COUNT(nu_int) AS inter
        FROM en_cours 
        WHERE 
            (wo_user_creator ='tech1' OR wo_user_creator ='tech2')
            AND TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IYYY') = '2023'
        GROUP BY
            TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IW'),
            TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IYYY')
        UNION
        SELECT  
            TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IW') AS Semaine,
            TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IYYY') AS annee,
            COUNT(nu_int) AS inter
        FROM archive
        WHERE 
            (wo_user_creator ='tech1' OR wo_user_creator ='tech2')
            AND TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IYYY') = '2023'
        GROUP BY
            TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IW'),
            TO_CHAR(TO_DATE(da_ap, 'YYYY-MM-DD'), 'IYYY')
    )
    SELECT
        Semaine,
        annee,
        SUM(inter) AS TotalInter
    FROM RequeteTotale
    GROUP BY
        Semaine,
        annee
    ORDER BY
        Semaine DESC;

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

Discussions similaires

  1. erreur ora-00904 identificateur non valide
    Par zed80 dans le forum Oracle
    Réponses: 2
    Dernier message: 05/01/2010, 13h23
  2. Ora-00904 Identificateur non valide ?
    Par DBA_OCP dans le forum Oracle
    Réponses: 1
    Dernier message: 05/06/2009, 16h03
  3. ORA-00904 : identificateur non valide
    Par hotcold dans le forum SQL
    Réponses: 10
    Dernier message: 01/03/2009, 19h20
  4. Réponses: 2
    Dernier message: 26/02/2008, 09h16
  5. Réponses: 5
    Dernier message: 13/08/2007, 13h02

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