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 :

Fusion intelligente de 2 tables


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Points : 50
    Points
    50
    Par défaut Fusion intelligente de 2 tables
    Bonjour à tous,
    J'ai besoin de fusionner 2 tables comme suit mais j'ai pas trouvé la bonne (les bonnes) instruction(s) SQL qui me permet(tent) de le faire

    TABLE 1TABLE 2
    |A | B | |A | C |
    --------- ---------
    | X | a | | Y | w |
    | Y | b | | Z | m |
    | Z | c | ---------
    ---------

    Ce que je veux obtenir une table "TABLE 3" comme celle ci:
    |A | B | C |
    ------------
    | X | a | 0 | (zero)
    | Y | b | w |
    | Z | c | m |
    ------------

    Avez vous des idées ?

    MERCI

  2. #2
    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 388
    Points
    18 388
    Par défaut
    Vous pouvez essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create table table3 as
    select
        coalesce(t1.A, t2.A) as A,
        coalesce(t1.B, '0') as B,
        coalesce(t2.C, '0') as C
    from
        table1 t1
        full outer join table2 t2
          on t2.A = t1.A
    Notez que le full outer join n'est peut-être pas nécessaire, dans votre exemple un left outer join est suffisant, celà dépend de vos données.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 86
    Points : 83
    Points
    83
    Par défaut encore une autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE table3 AS
    SELECT DISTINCT  a.*, 
    case 
    when b.c NE   ' '  then b.c
    when b.c like  ' '  then  '0' end as c
    FROM table1   a
    FULL OUTER JOIN
    table2      b
    on a.a=b.a ;
    QUIT;

  4. #4
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Points : 50
    Points
    50
    Par défaut
    Merci à vous deux

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

Discussions similaires

  1. Fusion "conditionnelle" de 2 tables
    Par Yearningly dans le forum SAS Base
    Réponses: 1
    Dernier message: 10/04/2013, 18h09
  2. [SQL] Fusion plus de 2 tables avec proc sql
    Par Olive2011 dans le forum SAS Base
    Réponses: 10
    Dernier message: 06/07/2012, 15h08
  3. [Débutant] creation de colonne séparé puis fusion en une seule table
    Par racoon971 dans le forum C#
    Réponses: 0
    Dernier message: 26/10/2011, 10h02
  4. Fusion horizontale de deux tables
    Par geofnich dans le forum SAS Base
    Réponses: 1
    Dernier message: 20/05/2010, 15h30
  5. Fusion de lignes de tables en éliminant les redondances
    Par MinsK dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 22/04/2004, 09h21

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