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

Requêtes PostgreSQL Discussion :

Select des lignes group by une colonne en fonction d'une liste [8.4]


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 46
    Points : 47
    Points
    47
    Par défaut Select des lignes group by une colonne en fonction d'une liste
    Bonjour,

    Je cherche à faire un simple select des lignes qui ont des codes de type (OTM ou PTM ou TM) ET(OTB ou SSC ou OTT) group by id,cfr

    Voici mon dataset:
    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
     
    id;cfr;code
    5032183;FRA000199078	;OTM
    1491043;FRA000341180	;PTM
    6249237;FRA000463933;OTM
    6249237;FRA000463933;PTM
    6249237;FRA000463933;SSC
    6249239;FRA000463935;OTM
    6249239;FRA000463935;TM
    6249239;FRA000463935;PTM
    6249400;FRA000463935;OTT
    6249401;FRA000463940;TM
    6249401;FRA000463940;OTT
    6249401;FRA000463940;OTT
    6249401;FRA000463940;OTT
    Voici le résultat attendu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    id;cfr;code
    6249237;FRA000463933;OTM
    6249237;FRA000463933;PTM
    6249237;FRA000463933;SSC
    6249401;FRA000463940;TM
    6249401;FRA000463940;OTT
    6249401;FRA000463940;OTT
    6249401;FRA000463940;OTT
    En fait un des éléments de la liste (OTM ou PTM ou TM) existe avec un des éléments de la liste (OTB ou SSC ou OTT) pour le même id, cfr

    Merci beaucoup pour votre aide,

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 338
    Points : 39 738
    Points
    39 738
    Billets dans le blog
    9
    Par défaut
    Si on n'a pas besoin d'afficher la 2ème valeur trouvée, on peut faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT ID, CFR, CODE
    FROM MATABLE as main
    WHERE CODE IN ('OTM', 'PTM', 'TM')
       and exists   
         (SELECT 1 
          from MATABLE as SUBQ
          WHERE SUBQ.ID=MAIN.ID
            AND SUBQ.CFR=MAIN.CFR
            AND SUBQ.CODE IN ('OTB', 'SSC', 'OTT'))
    Par contre on ne peut pas à la fois grouper sur ID+CFR et lister les différentes valeurs de code

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 106
    Points : 28 391
    Points
    28 391
    Par défaut
    Une des manières de faire serait la suivante :
    • Sélectionner les lignes qui ont un code de type (OTM ou PTM ou TM) pour lesquelles existe un même id,cfr avec un code de type (OTB ou SSC ou OTT)
    • Sélectionner les lignes qui ont un code de type (OTB ou SSC ou OTT) pour lesquelles existe un même id,cfr avec un code de type (OTM ou PTM ou TM)
    • Retourner ces deux listes

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 106
    Points : 28 391
    Points
    28 391
    Par défaut
    Une autre manière de faire :
    • Retourner les lignes pour lesquelles existe un même id,cfr avec un code de type (OTM ou PTM ou TM) et un même id,cfr avec un code de type (OTB ou SSC ou OTT)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 46
    Points : 47
    Points
    47
    Par défaut
    Excellent tout ceci m'a bien aidé, merci.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/02/2014, 10h01
  2. [2008] Créer une colonne en fonction d'une donnée dans un select
    Par Naruto_kun dans le forum Développement
    Réponses: 8
    Dernier message: 05/11/2013, 09h01
  3. Somme d'une colonne en fonction d'une autre
    Par j.mathieu dans le forum Excel
    Réponses: 6
    Dernier message: 16/08/2008, 14h55
  4. Réponses: 2
    Dernier message: 01/12/2006, 10h09
  5. Contraite NULL sur une colonne en fonction d'une autre colon
    Par speedy1496 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2004, 19h29

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