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

SAS Base Discussion :

SAS jointure sous condition


Sujet :

SAS Base

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Par défaut SAS jointure sous condition
    Bonjour le forum,

    Je vous ai présenté mon problème dans la pièce jointe ci dessous pour plus de clareté.

    En résumé il s'agit de réaliser des jointures avec certaines conditions.

    Merci
    Images attachées Images attachées  

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Par défaut
    Bjr,

    Voici une réponse fait à la va-vite.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    data MAJ ; 
    informat date_MAJ DDMMYY9. ; 
    format date_MAJ DDMMYY9. ; 
    input ID date_MAJ $ ; 
    cards ; 
    1 06/06/2012
    1 07/06/2012 
    4 20/06/2012
    4 07/06/2012
    ;
    run ; 
     
    data note ; 
    informat date_note DDMMYY9. ; 
    format date_note DDMMYY9. ; 
    input ID date_note $ note; 
    cards ; 
    1 06/06/2012 15
    1 07/06/2012 16
    4 20/06/2012 19 
    4 07/06/2012 20
    ;
    run ; 
     
    /* On prend la date max */
    proc sql ; 
    create table MAJ_bis as 
    select ID , Max(date_MAJ) As date_MAJ_bis 
    from MAJ 
    group by ID  
    order by ID ;
    quit ; 
    /* on fait la jointure et on élimine les dates supérieures */
    proc sql ; 
    create table jointure as 
    Select note.ID ,   date_MAJ_bis , max(date_note) as dat 
    from MAJ_bis INNER JOIN note ON (  MAJ_bis.ID = note.ID and date_note <= date_Maj_bis ) 
    group by note.ID , date_MAJ_bis ;
    quit ; 
    /* on rajoute les notes */
    proc sql ; 
    create table final as 
    Select jointure.ID , jointure.date_MAJ_bis , jointure.dat , note.note 
    from jointure Inner join Note On ( jointure.ID = Note.ID AND Jointure.dat = note.date_note);
    quit ;
    Il reste qu'à ajuster les formats de date à la fin

    Cdt

    Rom

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Par défaut
    merci,

    Cependant mes dates de la table : MAJ ne sont pas égalent aux dates de la table : note

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Par défaut
    Euh , je pense que c'est normal , je suis parti du postulat que la table note a pour clés primaires ID et date_note , tandis que la table MAJ a pour clés primaires date_maj et ID.

    Les dates de notes doivent êtres les plus proches ( en inférieur ) aux date_maj ... du coup je ne comprends pas trop ta dernière affirmation

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Par défaut
    bonjour,

    Cette solution fonctionne parfaitement.

    maintenant que j'ai réussi à obtenir mon fichier regroupé, je n'arrive pas à selectionner la ligne voulue.

    Ma clé correspond à l'ID + date MAJ + heure
    Pour une même clé je voudrai juste la dernière valeur de DATE NOTE (déjà trié)

    Est il possible de réaliser cette étape sans concaténer mes 3 valeurs ?

    Merci
    Images attachées Images attachées  

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

Discussions similaires

  1. Jointure sous SAS
    Par draculla dans le forum SAS Base
    Réponses: 2
    Dernier message: 26/06/2015, 18h35
  2. Jointure externe sous condition
    Par amAtunisian dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/10/2013, 23h26
  3. jointure sous SAS proc sql
    Par id301077 dans le forum SAS Base
    Réponses: 3
    Dernier message: 15/05/2009, 17h08
  4. Create function sous condition
    Par nbl dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/05/2005, 12h00
  5. Encore une jointure sous Oracle pour la route
    Par ebaynaud dans le forum Langage SQL
    Réponses: 15
    Dernier message: 04/11/2004, 11h40

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