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 :

Regroupement sur case


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 9
    Par défaut Regroupement sur case
    Bonjour,

    J'ai un petit souci sur une requête, je voudrais faire un regroupement sur une date par tranche horaire :
    de 0 à 13 h => Matin
    de 13 h à 24 => Après midi

    la requête est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    select
       case
           when to_number(to_char(dttm_validate,'HH24')) < 13 then 'M'
           when to_number(to_char(dttm_validate,'HH24')) >=13 then 'AM' 
       end as "Q",
       trunc (DTTM_VALIDATE),
       count(cd_wo)
    from ws
    where CD_BOX like 'T5%' 
    and dttm_validate >= sysdate -365
    group by trunc(dttm_validate),"Q"
    Seulement cette requête me renvoi l'erreur : ORA-00904: "Q" : identificateur, non valide.

    Quelqu'un à une idée sur la méthode à employer ?

    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Par défaut
    Tu as essayé en recopiant ton case dans le "group by" au lieu de mettre l'alias "Q"?

  3. #3
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Essaye une vue implicite du style :
    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 Q, trunc (DTTM_VALIDATE), count(cd_wo)
    FROM (
      SELECT
         case
             when to_number(to_char(dttm_validate,'HH24')) < 13 then 'M'
             when to_number(to_char(dttm_validate,'HH24')) >=13 then 'AM' 
         end AS "Q",
         DTTM_VALIDATE,
         cd_wo
      FROM ws
      WHERE CD_BOX LIKE 'T5%' 
      AND dttm_validate >= sysdate -365)
    GROUP BY trunc(dttm_validate), Q

  4. #4
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 9
    Par défaut
    Merci à vous deux, les deux solutions fonctionnent.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Un complément par rapport au besoin, Oracle permet déjà de savoir si c'est le matin ou l'après-midi.

    Vous pouvez remplacer le CASE par, en fonction purement Oracle (pour les puristes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decode(to_char(dttm_validate, 'AM'), 'AM', 'M', 'AM')
    Notez que vous pouvez mettre indifféremment le format AM ou PM dans le to_char.

  6. #6
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 9
    Par défaut
    Merci pour l'information.

    J'avais vu que c'était possible dans la FAQ mais je n'avais pas pensé au decode. Et AM-PM sont basés sur 12h et j'ai besoin d'un découpage à 13h.

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

Discussions similaires

  1. Pb de script sur case à coher
    Par storm61 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/01/2006, 05h08
  2. recuperer une info sur case a cocher
    Par nogood1 dans le forum Access
    Réponses: 1
    Dernier message: 21/10/2005, 15h15
  3. tutoriel cafeine multicritére: test sur case à cocher
    Par fast&furious dans le forum Access
    Réponses: 2
    Dernier message: 13/10/2005, 21h05
  4. changement des couleurs par appuis sur case à cocher
    Par Wormus dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/10/2005, 00h05
  5. Jointure et regroupement sur 2 tables
    Par rocs dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/07/2005, 12h04

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