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

Oracle Discussion :

regrouper par id différents


Sujet :

Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut regrouper par id différents
    Bonjour,
    est-il possible de regrouper des champs qui n'ont pas le même id?

    Exemple :

    j'ai une table comme ceci :
    Magasins | Equipements | Stock
    ---------------------------------------------
    Toto |Téléviseurs numériques | 45
    Toto | Lecteurs DVD | 27
    Toto | Lave linge | 29
    Toto | Gazinières | 14
    Toto | Perçeuses | 12
    Titi | Gazinières | 47
    Titi | Perçeuses | 24
    Titi | Lave linge | 13
    Tata |Téléviseurs numériques | 26
    Tata | Lave linge | 15
    Je voudrais regrouper les équipements, en groupe que je défini : le groupe MULTIMEDIA comprend "téléviseurs numériques et lecteurs DVD", le groupe ELECTROMENAGER comprend "Gazinières et Lave linge" et enfin le groupe OUTILS comprend "Perçeuses".

    Au final on aurait :

    Magasins | Equipements | Stock
    ---------------------------------------------
    Toto | MULTIMEDIA | 45+27
    Toto | ELECTROMENAGER | 29+14
    Toto | OUTILS | 12
    Titi | ELECTROMENAGER | 47+13
    Titi | OUTILS | 24
    Tata | MULTIMEDIA | 26
    Tata | ELECTROMENAGER | 15

    Merci pour votre aide

  2. #2
    Membre actif Avatar de petitfrere
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 259
    Points : 278
    Points
    278
    Par défaut
    C'est certainement faisable mais c'est plus simple de créer une colonne "TYPE" non ?

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Tout à fait d'accord avec le post précédent, créez-vous une table d'équipements qui appartiendra à un groupe d'équipement.

    Pour vous dépanner :
    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
    SELECT
        magasins,
        case
          when Equipements IN ('Téléviseurs numériques', 'Lecteurs DVD') then 'MULTIMEDIA'
          when Equipements IN ('Gazinières', 'Lave linge') then 'ELECTROMENAGER'
          when Equipements = 'Perçeuses' then 'OUTILS'
        end as grp_equi,
        sum(Stock)
    FROM
        <matable>
    GROUP BY
        magasins,
        case
          when Equipements IN ('Téléviseurs numériques', 'Lecteurs DVD') then 'MULTIMEDIA'
          when Equipements IN ('Gazinières', 'Lave linge') then 'ELECTROMENAGER'
          when Equipements = 'Perçeuses' then 'OUTILS'
        end;

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Petitfrere, j'ai pas les droits pour crréer une nouvelle colonne.

    Waldar, j'ai essayé ce que tu m'as dit, mais ça n'a pas donné de résultat!

    Je vais essayer sur une plus petite table que celle que j'ai, j'obtiendrai peut etre quelque chose.
    En attendant, toute nouvelle aide n'est, biensur, pas de refus.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Si ça ne donne pas de résultat celà vient de vos données, j'ai utilisé celles que vous avez mises ici :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    WITH Stock AS
    (
    select 'Toto' as mag, 'Lecteurs DVD'    as eqp, 27 as qte from dual union all
    select 'Toto'       , 'Téléviseurs numériques', 45        from dual union all
    select 'Toto'       , 'Lave linge'            , 29        from dual union all
    select 'Toto'       , 'Gazinières'            , 14        from dual union all
    select 'Toto'       , 'Perçeuses'             , 12        from dual union all
    select 'Titi'       , 'Gazinières'            , 47        from dual union all
    select 'Titi'       , 'Perçeuses'             , 24        from dual union all
    select 'Titi'       , 'Lave linge'            , 13        from dual union all
    select 'Tata'       , 'Téléviseurs numériques', 26        from dual union all
    select 'Tata'       , 'Lave linge'            , 15        from dual
    )
    SELECT
        MAG,
        CASE
          WHEN EQP IN ('Téléviseurs numériques', 'Lecteurs DVD') THEN 'MULTIMEDIA'
          WHEN EQP IN ('Gazinières', 'Lave linge')               THEN 'ELECTROMENAGER'
          WHEN EQP = 'Perçeuses'                                 THEN 'OUTILS'
        END AS GRP_EQP,
        SUM(QTE) AS QTE_TOT
    FROM
        STOCK
    GROUP BY
        MAG,
        CASE
          WHEN EQP IN ('Téléviseurs numériques', 'Lecteurs DVD') THEN 'MULTIMEDIA'
          WHEN EQP IN ('Gazinières', 'Lave linge')               THEN 'ELECTROMENAGER'
          WHEN EQP = 'Perçeuses'                                 THEN 'OUTILS'
        END
    ORDER BY
        MAG DESC,
        GRP_EQP ASC;
     
    MAG     GRP_EQP           QTE_TOT
    ------ ----------------- --------
    Toto    ELECTROMENAGER         43
    Toto    MULTIMEDIA             72
    Toto    OUTILS                 12
    Titi    ELECTROMENAGER         60
    Titi    OUTILS                 24
    Tata    ELECTROMENAGER         15
    Tata    MULTIMEDIA             26

Discussions similaires

  1. Regroupement par quinzaine (1->15,16->31)
    Par __fabrice dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/01/2006, 13h16
  2. [Requête] Regroupement par mois en cours
    Par Burnout dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/01/2006, 10h36
  3. Réponses: 5
    Dernier message: 29/09/2004, 12h05
  4. [DB2]Requête regroupement par intervals
    Par sm dans le forum DB2
    Réponses: 8
    Dernier message: 01/09/2004, 18h19
  5. Regroupement par mois
    Par fplanglois dans le forum SQL
    Réponses: 7
    Dernier message: 29/07/2003, 17h32

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