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 :

regrouper 2 lignes en 1 seule


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 410
    Points : 147
    Points
    147
    Par défaut regrouper 2 lignes en 1 seule
    Bonjour,

    j'ai une requête qui me retourne 2 infos par id au moyen d'une UNION :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT id,
           'DE' droit,
           znum
    FROM tab
    WHERE id_attrib = 'PRCENT_DE'
    UNION
    SELECT id,
           'DS' droit,
           znum
    FROM tab
    WHERE id_attrib = 'PRCENT_DS'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    id	droit	znum
    1015	DE	2
    1015	DS	0
    1213	DE	1.75
    1213	DS	3
    ...
    Mais j'aimerais obtenir ces infos en 1 ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id	de	ds
    1015	2	0
    1213	1.75	3
    ...
    Y a-t-il un moyen de faire ça directement au moyen d'une requête SQL ?
    Merci.

  2. #2
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    il doit y'avoir mieux mais tu peux faire un truc 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
    15
     
    select id, sum(DE), sum(DS)
    FROM
    (SELECT id,
           znum as DE,
           0 as DS
    FROM tab
    WHERE id_attrib = 'PRCENT_DE'
    UNION ALL
    SELECT id,
           0,
           znum
    FROM tab
    WHERE id_attrib = 'PRCENT_DS')
    GROUP BY id
    J'ai rajouté UNION ALL à la place de UNION car tes ensembles sont disjoints (il ne peut pas exister de ligne tel que id_attrib = 'PRCENT_DE' et en même temps = 'PRCENT_DS'), le union all t'évitera le coût du SORT UNIQUE

  3. #3
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 410
    Points : 147
    Points
    147
    Par défaut
    OK, merci pour l'astuce !

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

Discussions similaires

  1. Regrouper plusieurs lignes dans une seule
    Par djinpark1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2013, 13h26
  2. [AC-2003] Regrouper plusieurs lignes en une seule
    Par DeFCrew dans le forum IHM
    Réponses: 2
    Dernier message: 20/12/2010, 16h19
  3. Regrouper plusieurs lignes en une seule
    Par Nicolerst dans le forum Développement
    Réponses: 2
    Dernier message: 18/08/2010, 10h50
  4. Regrouper plusieurs lignes sur une seule
    Par Mygush dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/09/2009, 11h05
  5. SQL : Regrouper des lignes dans une seule colonne
    Par manoir62 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/02/2009, 18h06

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