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 :

Recuperer une donnée d une autre table et faire un sommation


Sujet :

Débutez

  1. #1
    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 Recuperer une donnée d une autre table et faire un sommation
    Bonjour,

    j ai 2 tables comme suit :

    Table1

    client datedebut datefin
    A1 01.01.2014 03.01.2014
    B1 05.01.2014 02.01.2015
    C1 01.02.2014 01.03.2015
    D1 01.03.2014 28.02.2015
    ..

    Table2

    date montant
    01.01.2014 5
    02.01.2014 4
    03.01.2014 9
    ..
    31.03.2015 7

    je veux calculer pour les client A1 de ca datedebut le 01.01.2014 jusqu au datefin 03.01.2014 la somme de tt les montant de chaque jour qui se trouve dans la tabel2.
    (5+4+9) = 18


    output desiré

    client datedebut datefin somme_montant
    A1 01.01.2014 03.01.2014 18
    B1 05.01.2014 02.01.2015 3260
    C1 01.02.2014 01.03.2015 3200
    D1 01.03.2014 28.02.2015 2500

    Merci

  2. #2
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Je te propose cette solution:
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    data Table1  ;
    format client $2. datedebut datefin ddmmyy10.;
    input client $2. datedebut ddmmyy10. datefin ddmmyy10.; 
    cards;
    A1 01012014 03012014
    B1 05012014 02012015
    C1 01022014 01032015
    D1 01032014 28022015
    ;run;
     
    data table11;
    set table1;
    format date ddmmyy10.;
    date= datedebut;
     
    output;
    do until(Date =datefin);
    	date = intnx('day',date,1);
     
        output;
    end;
     
     run;
     
     
     
    data Table2  (index=(date));
    format date ddmmyy10. montant;
    input date ddmmyy10. montant;
    cards;
    01.01.2014 5
    02.01.2014 4
    03.01.2014 9
    05.01.2014 1
    06.01.2014 5
    ;run;
     
    data table3 (drop=errormessage);  
      set table11;
    by notsorted date; 
      do until (_iorc_=%sysrc(_dsenom));  
        set table2 key=date ;  
        select (_iorc_);  
          when (%sysrc(_sok)) do;
     
    	  output;
      end;
          when (%sysrc(_dsenom)) _error_ = 0;  
          otherwise do;  
            errormessage = iorcmsg();  
            put "ATTENTION: unknown error condition: " errormessage;  
          end;  
        end;  
      end;  
     
     
     
    run;  
     
     
    data table4 (drop=montant);
    set table3;
    by client;
    retain somme 0;
    if first.client then do; somme=0;
    end;
    somme+montant;
    if last.client then output;
    run;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  3. #3
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Bonjour,

    Une solution en SQL ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    proc sql;
    	create table tot as select
    		t1.*,
    		sum(t2.montant) as somme
    	from table1 t1
    		left join table2 t2 on (t2.date between t1.datedebut and t1.datefin)
    	group by 1,2,3;
    quit;
    Bon courage

  4. #4
    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
    Merci à vous

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/05/2013, 17h48
  2. [WD15] Recuperation de donnée d'une varialbe dans une autre fiche
    Par youcef_b_dz dans le forum WinDev
    Réponses: 9
    Dernier message: 22/06/2012, 14h37
  3. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  4. [WD16] Lecture donnée d'une base dans une valeur d'une autre base
    Par gef13 dans le forum WinDev
    Réponses: 2
    Dernier message: 16/11/2011, 09h05
  5. Réponses: 2
    Dernier message: 18/12/2006, 19h04

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