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 et SQL. Discussion :

Fusionner deux colonnes


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Fusionner deux colonnes
    Bonjour à tous,

    Alors voilà je vous explique mon problème :
    J'ai deux requêtes : Ventes annuelles et Ventes annuelles N-1
    Chaque requête contient les champs : Nom de catégorie, Tonnage, Société

    J'aimerais obtenir une requête qui me renvoie : Société, Nom de catégorie, [Ventes annuelles].Tonnage, [Ventes annuelles N-1].Tonnage

    Pour cela j'ai voulu faire un "full join" mais a priori je ne peux pas.

    J'ai donc chercher et j'ai trouver une solution en faisant un inner join, un right join, un left join et en faisant un union entre chaque.
    Ce qui me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
    FROM [Ventes annuelles] inner join [Ventes annuelles N-1] on [Ventes annuelles].Société = [Ventes annuelles N-1].Société
    UNION
    SELECT *
    FROM [Ventes annuelles] right join [Ventes annuelles N-1] on [Ventes annuelles].Société = [Ventes annuelles N-1].Société
    union
    SELECT *
    FROM [Ventes annuelles] left join [Ventes annuelles N-1] on [Ventes annuelles].Société = [Ventes annuelles N-1].Société;

    Mais le problème c'est que ça me donne 6 colonnes au lieu de quatre.


    Je voudrais donc fusionner les deux colonnes Société que j'ai pour n'en obtenir qu'une, de même que les colonnes Nom de catégorie.

    En gros j'ai une colonne avec :
    Colonne 1 :
    Client 1
    Vide
    Client 2
    Client 3

    Colonne 2 :
    Client 1
    Client 4
    Client 2
    Vide

    Et je voudrais obtenir une colonne comme suit :
    Client 1
    Client 4
    Client 2
    Client 3


    Je sais pas si j'ai été clair,

    Quelqu'un a une idée pour mon problème ?


    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Une méthode artisanale donc facile à comprendre.

    Au départ tu as :



    Et tu voudrais ceci :



    Tu crées d'abord une table tResultat




    Séquence des opérations

    1° Vidanger tResultat de son précédent contenu




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE tResultat.rSociete
    FROM tResultat;
    2° Compléter tResultat avec les données de A-1




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO tResultat ( rSociete, rCategorie, [rTonnageA-1] )
    SELECT [ReqAnneeA-1].Societe, [ReqAnneeA-1].Categorie, [ReqAnneeA-1].Tonnage
    FROM [ReqAnneeA-1];
    3° Ajouter dans tResultat les nouvelles combinaisons Société/Catégorie éventuelles (celles qui n’existaient pas encore en A-1




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO tResultat ( rSociete, rCategorie )
    SELECT ReqAnneeA.Societe, ReqAnneeA.Categorie
    FROM ReqAnneeA;

    4° Compléter tResultat avec les données de A



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE tResultat INNER JOIN ReqAnneeA ON (tResultat.rSociete = ReqAnneeA.Societe) AND (tResultat.rCategorie = ReqAnneeA.Categorie) SET tResultat.rTonnageA = [Tonnage];
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    hello,

    une autre manière de voir les choses:

    tu crées une requête union que tu exploites ensuite dans un group by.
    la particularité est créer un champ supplémentaire te permettant d'identifier la source (dommage d'ailleurs que ce ne soit pas la même table avec un champ date - par exemple )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'requete: requete_intermediaire
    select "exercice_actu" as quand, Nom de catégorie, Tonnage, Société  from [annee_n]
    union 
    select "exercice_avan" as quand, Nom de catégorie, Tonnage, Société  from [annee_1]
    ensuite tu fais ton group by
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select société, nom de categorie, sum(iif(quand="exercice_actu",tonnage,0)) as ventes_actu, sum(iif(quand="exercice_avan",tonnage,0)) as ventes_prec
    from requete_intermediaire
    group by société, nom de categorie
    désolé, les champs et tables sont nommés de manière approximatives par rapport à ton énoncé mais appliqué à ta problématique ça doit marcher
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Merci pour vos réponses !

    Je vais essayer ces solutions avec une préférences pour les requêtes.

Discussions similaires

  1. [OpenOffice][Tableur] Fusionner deux colonnes
    Par Thrystan dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 05/09/2017, 22h37
  2. Fusionner deux colonnes
    Par cedill23 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/11/2010, 18h53
  3. Réponses: 1
    Dernier message: 28/09/2010, 17h36
  4. Requête pour fusionner deux colonnes
    Par david71 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/12/2007, 20h44
  5. FUSIONNER DEUX COLONNES : est ce posible ?
    Par ePoX dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/12/2005, 20h59

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