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 de group by


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut Problème de group by
    Bonsoir,

    je bosse actuellement sur des solutions de reporting et on m'a demandé de tester BIRT avec une base oracle existante (9i)

    Pour faire mon reporting je n'ai besoin que d'attaquer 2 ou 3 tables.
    l'une d'elle s'appelle agg_jour et est composée de pleins de champs dont 24 particulièrement qui contiennent pleins de valeurs utiles, cependant pour faire un graphe utile il m'a fallu faire un pivot de cette table. (j'utilise aussi une table abscisse qui contient les informations intermediaires et enfin une table requete qui contient l'intitulé de la requete) (en gros requete - abscisse - agg_jour pour ce qui est des jointures)

    voilà j'aimerais faire une requete qui me permet de faire apparaitre les id_absc qui sont clé primaire de la table abscisse et clé etrangere de la table agg_jour, cependant, j'ai la même abscisse qui apparait 24x (une par heure) et je voudrais faire en sorte que celle ci n'apparaisse qu'une fois.
    la requete que j'utilise pour le pivot est celle-ci (elle va etre assez longue désolé)

    select distinct abscisses.NUM8AB,abscisses.ID_ABSC,t2.r heure,
    decode(t2.r,
    1,h00,
    2,h01,
    3,h02,
    4,h03,
    5,h04,
    6,h05,
    7,h06,
    8,h07,
    9,h08,
    10,h09,
    11,h10,
    12,h11,
    13,h12,
    14,h13,
    15,h14,
    16,h15,
    17,h16,
    18,h17,
    19,h18,
    20,h19,
    21,h20,
    22,h21,
    23,h22,
    24,h23) Nombre_appel
    from requetes inner join abscisses on requetes.ID_REQ = abscisses.ID_REQ inner join agg_jour on abscisses.ID_ABSC = agg_jour.ID_ABSC,(select
    rownum r
    from
    all_objects
    where
    rownum<=24) t2
    where requetes.ID_REQ = 2 and abscisses.NUM8AB = '0811702702' and agg_jour.JOUR = '08/04/08'

    Quand j'essaye de faire un group by sous oracle par le id_absc je me fais jeter, normal. Maintenant en essayant de faire le group by par heure, ça ne passe pas, ou du moins j'ai pas vraiment d'idée avec cette requete (qui soit dit en passant, me semble pas forcément adaptée pour ce que je veux faire)
    Ah oui, ce que je veux faire, c'est une requete avec en sortie 2 colonnes en gros, ou du moins içi, avec 7 colonnes (une colonne par abscisse)

    voilà j'espere avoir été clair dans mes explications.

    en vous remerciant par avance (je bloque là )

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    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
     
    select abscisses.NUM8AB,abscisses.ID_ABSC,t2.r heure, 
    sum(decode(t2.r,
    1,h00,
    2,h01,
    3,h02,
    4,h03,
    5,h04,
    6,h05,
    7,h06,
    8,h07,
    9,h08,
    10,h09,
    11,h10,
    12,h11,
    13,h12,
    14,h13,
    15,h14,
    16,h15,
    17,h16,
    18,h17,
    19,h18,
    20,h19,
    21,h20,
    22,h21,
    23,h22,
    24,h23)) Nombre_appel
    from requetes inner join abscisses on requetes.ID_REQ = abscisses.ID_REQ inner join agg_jour on abscisses.ID_ABSC = agg_jour.ID_ABSC,(select
    rownum r
    from
    all_objects
    where
    rownum<=24) t2
    where requetes.ID_REQ = 2 and abscisses.NUM8AB = '0811702702' and agg_jour.JOUR = '08/04/08'
    group by abscisses.NUM8AB,abscisses.ID_ABSC,t2.r
    note all_objects c'est pas terrible, je préfèrerais une table T2, style

    CREATE TABLE T2 AS select rownum r from all_objects where rownum<=24;

    j'espère que ça te mets sur la voie. Dans Oracle 10g on peut utiliser MODEL et dans 11g on peut utiliser PIVOT / UNPIVOT

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut
    merci pour la piste je vais regarder ça.

    on m'a dit que c'etait une base 9i, enfin entre ce qu'on m'a dit et la réalité...

    merci en tout cas

Discussions similaires

  1. [XI] problème avec groupe sur un champ trié par origine ?
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 11/04/2007, 15h31
  2. Problème avec GROUP BY
    Par Korskarn dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/03/2006, 14h35
  3. Problème avec group by...
    Par gdido dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/07/2005, 09h34
  4. [débutant] problème avec Group by
    Par Amenofis dans le forum Débuter
    Réponses: 5
    Dernier message: 25/05/2005, 09h57
  5. Réponses: 9
    Dernier message: 17/01/2004, 10h51

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