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

SSIS Discussion :

Jointure conditionnelle sur plusieurs attributs


Sujet :

SSIS

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Jointure conditionnelle sur plusieurs attributs
    Bonjour,

    Je souhaiterai effectuer une condition de jointure un peu particulière.
    J'ai 2 Tables :
    - table Compte (avec 3 références de comptes différentes et un segment marketing que je veux récupérer)
    - une table Activité (avec une référence de compte)

    Le but serait de faire un algo de ce type :
    Si Activité.Ref_Compte = Comptes.Compte1 alors
    Récupère le segment marketing et ajoute le dans Activité
    Sinon (si ça match pas)
    Si Activité.Ref_Compte = Comptes.Compte2 alors
    Récupère le segment marketing et ajoute le dans Activité
    sinon (si ça match pas)
    Si Activité.Ref_Compte = Comptes.Compte3 alors
    Récupère le segment marketing et ajoute le dans Activité

    En effet, la Ref_Compte de la table Comptes peut être de différents types

    Quel outil puis-je utiliser sous SSIS pour effectuer cette opération ?

    Merci d'avance pour vos réponses

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le plus simple et peut être plus performant serait de faire un CASE WHEN dans ton composant source en SQL.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'ai essayé cette requête mais cela ne me renvoi que des valeurs NULL dans les nouveaux champs que je cherche à remplir...

    Select FAIT.*,
    CASE When FAIT.REF_COMPTE = COMPTE1.[REF COMPTE] then COMPTE1.[SEGMENT MARKETING]
    When FAIT.REF_COMPTE = COMPTE2.[REF TDG] then COMPTE2.[SEGMENT MARKETING]
    When FAIT.REF_COMPTE = COMPTE3.[REF PF OH] then COMPTE3.[SEGMENT MARKETING] end as segmentMKT_TDG
    FROM FAIT, COMPTE as COMPTE1, COMPTE as COMPTE2, COMPTE as COMPTE3

    Je ne suis pas sûr d'utiliser le case correctement

  4. #4
    Membre régulier Avatar de keketteboy
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Thomas31000 Voir le message
    Bonjour,

    J'ai essayé cette requête mais cela ne me renvoi que des valeurs NULL dans les nouveaux champs que je cherche à remplir...

    Select FAIT.*,
    CASE When FAIT.REF_COMPTE = COMPTE1.[REF COMPTE] then COMPTE1.[SEGMENT MARKETING]
    When FAIT.REF_COMPTE = COMPTE2.[REF TDG] then COMPTE2.[SEGMENT MARKETING]
    When FAIT.REF_COMPTE = COMPTE3.[REF PF OH] then COMPTE3.[SEGMENT MARKETING] end as segmentMKT_TDG
    FROM FAIT, COMPTE as COMPTE1, COMPTE as COMPTE2, COMPTE as COMPTE3

    Je ne suis pas sûr d'utiliser le case correctement
    Bonjour,

    Si j'ai bien compris ta demande, le code SQL que tu souhaiterais devrait plutôt ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ISNULL(C1.[SEGMENT MARKETING],ISNULL(C2.[SEGMENT MARKETING],C3.[SEGMENT MARKETING])) AS segmentMKT_TDG
    FROM FAIT F
    LEFT OUTER JOIN COMPTE C1 ON F.REF_COMPTE = C1.REF_COMPTE
    LEFT OUTER JOIN COMPTE C2 ON F.REF_COMPTE = C2.[REF  TDG]
    LEFT OUTER JOIN COMPTE C3 ON F.REF_COMPTE = C3.[REF PF OH]
    Haï-Ha TRINH-VU, Consultant MS BI.

    "L'expérience est une lanterne attachée dans notre dos, qui n'éclaire que le chemin parcouru."
    "Lorsque l'on se cogne la tête contre un pot et que cela sonne creux, ça n'est pas forcément le pot qui est vide."

    Confucius

    Merci de cliquer sur si la réponse apportée est celle attendue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/10/2008, 13h29
  2. Jointure conditionnele sur plusieurs tables
    Par Clorish dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 20/12/2007, 14h20
  3. [VBA-E]Structure conditionnelle sur plusieurs variables
    Par rodrigue62 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/07/2007, 14h30
  4. SQL : Jointure droite sur plusieurs champs
    Par Platon93 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 19/12/2006, 13h55
  5. [XSLT] Select sur plusieurs attributs
    Par maitrebn dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 28/11/2006, 13h13

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