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

Langage SQL Discussion :

Scinder les éléments d'une colonne en plusieurs colonnes


Sujet :

Langage SQL

  1. #21
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour Waldar,

    Dans ta proposition, ci-dessous, à quel endroit dois-je insérer la fonction de différence, afin que, dans chaque colonnes les numéros de téléphones pour un MATRICULE donné, ne soient pas identiques
    (FIXE 1 != FIXE 2 et MOBILE 1 != MOBILE 2 != MOBILE 3).
    Actuellement c'est le cas j'ai par exemple, des matricules pour lequel MOBILE 1 et MOBILE sont identique, est MOBILE 3 différent. Cette répartition est très certainement le résultat d'une mauvaise gestion de la table CONTACT du départ (impossible à modifier).

    Je cherche de mon côté.

    Merci d’avance

    Citation Envoyé par Waldar Voir le message
    Et si vous voulez quelque chose d'un peu plus souple, mais pas encore complètement dynamique, vous pouvez utiliser un PIVOT :
    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
    with cte_all_nums (matricule, categorie, numtel, rn) as
    (
        select inf.matricule
             , case when substr(ctc.numtel, 1, 2) in ('06', '07') then 'MOBILE' else 'FIXE' end
             , ctc.numtel
             , row_number() over(partition by case when substr(ctc.numtel, 1, 2) in ('06', '07') then 'MOBILE' else 'FIXE' end order by ctc.numtel asc)
          from INFORMATION inf
     left join CONTACT     ctc  on ctc.id_information = inf.id_information
                               and ctc.numtel        is not null
         where inf.matricule is not null
    )
    select *
      from cte_all_nums
     pivot (max(numtel) for (categorie, rn) in ( ('FIXE'  , 1) as "FIXE N°1"
                                               , ('FIXE'  , 2) as "FIXE N°2"
                                               , ('MOBILE', 1) as "MOBILE N°1"
                                               , ('MOBILE', 2) as "MOBILE N°2"
                                               , ('MOBILE', 3) as "MOBILE N°3"
                                               ) );
    Ici je me suis limité à 2 fixe et 3 mobiles.

  2. #22
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par fabcd31 Voir le message
    Cette répartition est très certainement le résultat d'une mauvaise gestion de la table CONTACT du départ
    Vous voulez dire que vous pouvez avoir plusieurs fois le meme numéro pour un matricule dans la table contact ?

    Dans ce cas, vous pouvez remplacer ROW_NUMBER() PAR DENSE_RANK()

  3. #23
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Salut aieeeuuuuu

    Oui effectivement, bon résumé. Il peut y avoir pour un même matricule jusqu'à 4 numéros de mobile différents.

    je connaissais pas cette fonction, résultat au top.

    Chapeau bas

    Merci et bon week-end

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. mettre les résultat d'une requête sur plusieurs colonne
    Par irma2011 dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2012, 11h09
  2. Décomposer les valeurs d'une colonne en plusieurs lignes
    Par sinoun dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 13/10/2011, 15h23
  3. Réponses: 2
    Dernier message: 18/06/2008, 17h29
  4. Réponses: 7
    Dernier message: 03/04/2008, 11h33
  5. [VBA-E] Eclater les valeurs d'une cellue sur plusieurs colonnes
    Par sosophie dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/03/2007, 08h41

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