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

Débutez Discussion :

compléter une base


Sujet :

Débutez

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 33
    Points : 34
    Points
    34
    Par défaut compléter une base
    Bonjour,
    je ne parviens pas à résoudre un problème sous SAS:
    pour des personnes données, je dispose de montant provisionnés à différentes dates. Lorsqu'il n'y a pas de variation de la provision, la base de donnée n'affecte pas de ligne à ce mois car la provision reste là même (ex: Février ci-dessous).

    N° Dates Montant
    125 JAN2008 1000
    125 MAR2008 2000
    125 MAY2008 2500
    125 APR2008 0

    Je voudrais obtenir sur une seule ligne par personne, le montant provisionné chaque mois. C'est à dire un résultat du type:

    N° JAN2008 FEV2008 MAR2008 MAY2008 APR2008
    125 1000 1000 2000 2500 0


    Dans un premier temps est-il possible de de créer une ligne pour les mois manquants?

    N° Dates Montant
    125 JAN2008 1000
    125 FEV2008 1000
    125 MAR2008 2000
    125 MAY2008 2500
    125 APR2008 0



    Merci pour votre aide.

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    si je pars de l'hypothèse que FEV2008 existe pour une autre personne, il y a un moyen (que je trouve) pratique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    proc freq data=matable;
    table N°*Dates / SPARSE out=cartesien;
    run;
    Le sparse crée un produit de tout tes N° et de toutes tes dates.
    Ensuite, tu réinjectes les montants. les Missing doivent être mis à zéro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc sql;
    create table final as
    select c.* , MAX(m.montant , 0) as montant
    from cartesien as c
    left join matable as m on c.N°=m.N° and c.dates=m.Dates
    ;
    quit;
    Après tu transposes BY N°.
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 33
    Points : 34
    Points
    34
    Par défaut Reformulation
    Ps: (Autre formulation: les dates peuvent être remplacées par des couples (An, mois))

    Je dispose d'une base où pour des personnes données des provisions sont effectuées à plusieurs moments de l'année.
    Ces montants disposent d'une ligne uniquement lorsque d'une période à l'autre leur montant change.
    Ainsi certains mois plusieurs montants apparaissent, et d'autres mois aucun montant n'apparait.

    N°PERS An Mois Montant N° de l'évaluation
    125 2008 1 1000 1
    125 2008 3 2000 2
    125 2008 4 2150 3
    125 2008 4 2700 4
    125 2008 4 2500 5
    125 2008 5 0 6

    Le numéro d'évaluation est croissant avec le temps et permet en regroupant par N°PERS, par An et par mois de prendre la dernière évaluation du mois (qui est celle qui nous intéresse).

    Je cherche à obtenir un résultats du type 1 ligne par personne, avec les montants pour chaque mois, y compris les mois qui n'apparaissent pas dans la table initiale (et dont le montant à renseigner est celui du mois précédent):

    N°PERS Mois1 Mois2 Mois3 Mois4 Mois5 Mois_MIN An_MIN Mois_MAX An_MAX
    125 1000 1000 2000 2500 0 1 2008 4 2008


    Merci pour vos pistes.

    Edit:
    PS2: je n'avais pas vu ta réponse Datamétric, je vais essayer de la mettre en oeuvre. Merci

Discussions similaires

  1. Compléter une base de données
    Par locus dans le forum Administration
    Réponses: 0
    Dernier message: 29/10/2014, 20h27
  2. Extraction pour compléter une base de données
    Par Alain_06 dans le forum Word
    Réponses: 9
    Dernier message: 12/10/2014, 17h43
  3. [AC-2010] Compléter une base Access avec un classeur Excel ?
    Par jehhej dans le forum Access
    Réponses: 0
    Dernier message: 17/10/2012, 18h53
  4. Compléter une base de donnee depuis une sub dans un fichier Excel
    Par mimi123456789 dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/08/2012, 16h59
  5. Réponses: 0
    Dernier message: 05/06/2012, 17h20

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