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 :

Group by sur un alias


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Par défaut Group by sur un alias
    Bonjour,

    J'essaie de faire un group by sur un alias. D'après ce que j'ai compris, il faut faire une sous-requête. Pourtant, cela ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select count(datetime), myYear
    from (
      select
         datetime, 
         (select EXTRACT(year FROM datetime) from session) as "myYear"
      from
         session
      ) as inline
    group by myYear;
    J'ai l'erreur:

    "SQL command not properly ended"

    Qqn à une idée?
    Merci.

  2. #2
    Expert confirmé 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
    Par défaut
    Ca marche mais pas de As pour la table et des guillemets par tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    With v_session as (
      Select sysdate as datetime from dual
    )
    SELECT count(datetime), "myYear"
    FROM (
      SELECT
         datetime, 
         (SELECT EXTRACT(year FROM datetime) FROM v_session) AS "myYear"
      FROM
         v_session
      ) inline
    GROUP BY "myYear";

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Par défaut
    Merci pour l'aide. J'ai maintenant le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select count(datetime), "myYear"
    from (
      select
         datetime, 
         (select EXTRACT(year FROM datetime) from session) as "myYear"
      from
         session
      ) inline
    group by "myYear";
    Avec cette fois l'erreur:

    "ORA-01427: single-row subquery returns more than one row"

    J'ai lu dans la doc, qui fallait utilisé ALL/ANY/etc. dans la requête extérieur, mais cela ne fonctionne pas non plus.

    Une idée?
    Merci.

  4. #4
    Expert confirmé 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
    Par défaut
    Les requêtes scalaires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    SELECT
         datetime, 
         (SELECT EXTRACT(year FROM datetime) FROM session) AS "myYear"...
    ne peuvent ramener qu'au maximum une seule valeur


    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
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> WITH v_session AS (
      2    SELECT sysdate AS datetime FROM dual union all
      3    SELECT sysdate - 1 AS datetime FROM dual
      4  )
      5  SELECT count(datetime), "myYear"
      6  FROM (
      7    SELECT
      8       datetime,
      9       EXTRACT(year FROM datetime) AS "myYear"
     10    FROM
     11       v_session
     12    ) inline
     13  GROUP BY "myYear"
     14  /
     
    COUNT(DATETIME)     myYear
    --------------- ----------
                  2       2011
     
    SQL>

  5. #5
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    On peut aussi faire le GROUP BY directement sur l'expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WITH v_session(datetime) AS (
          SELECT sysdate      FROM dual union
          SELECT sysdate - 1 FROM dual
         )
    SELECT   count(datetime), EXTRACT(year FROM datetime) AS "myYear"
    FROM     v_session
    GROUP BY EXTRACT(year FROM datetime)

Discussions similaires

  1. Group BY sur un alias ?
    Par Seb33300 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/05/2013, 11h31
  2. Problème de GROUP BY sur un alias
    Par vever001 dans le forum Développement
    Réponses: 4
    Dernier message: 06/05/2010, 20h36
  3. Réponses: 9
    Dernier message: 17/01/2004, 10h51
  4. Group by sur resultat
    Par pointe dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/12/2003, 08h30
  5. operation sur des alias
    Par 74160 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/11/2003, 18h19

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