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 :

Aditionner une variable selon plusieurs conditions


Sujet :

SAS Base

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Stagiaire
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Aditionner une variable selon plusieurs conditions
    Bonjour,

    J'ai cherché sur le forum, mais je n'ai pas trouvé de solution qui me donne le résultat recherché.

    J'ai une table très volumineuses (plus de 4 millions d'individus) qui conserve les rabais accordés à divers clients pour les deux dernières années où ils ont obtenus un rabais.

    Elle ressemble à ceci (fausses données):

    ID Succursale Annee1 Annee2 Rabais1 Rabais2
    1000 A 2018 2017 50 25
    1000 B 2017 2016 10 30
    1001 A 2018 . 50 .
    1002 B 2015 2014 20 30
    1003 A 2018 2017 50 25
    1003 B 2018 2017 10 20
    1003 C 2017 2016 10 30

    Je désire obtenir une table avec chaque ID et le total de rabais obtenus pour 2018 et pour 2017, comme ceci:

    ID Rabais2018 Rabais 2017
    1000 50 35
    1001 50 .
    1002 . .
    1003 60 55

    J'ai essayé le code suivant:

    proc sql;
    create table nouvelletable as
    select distinct ID,
    case when annee1 = 2018 then sum(Rabais1)
    when annee2 = 2018 then sum(Rabais2)
    else 0
    end as rab_2018,
    case when annee1= 2017 then sum(Rabais1)
    when annee2 = 2017 then sum(Rabais2)
    else 0
    end as rab_2017
    from matable
    group by ID
    order by ID;
    quit;

    Ça ne me donne pas le résultats escompté, mais c'est le plus prêt que j'ai jusqu'à présent.

    Pouvez-vous m'aider?

  2. #2
    Futur Membre du Club
    Femme Profil pro
    Stagiaire
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Stagiaire

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Résolu
    Bonjour!

    Suite à une recherche ailleurs et après discussion avec un collègue, j'ai trouvé une solution toute simple à mon problème. Voici le code au cas où d'autres vivraient une situation similaire:

    proc sql;
    create table nouvelletable as
    select distinct ID,
    sum(case when annee1 = 2018 then Rabais1 else 0 end) +
    sum(case when annee2 = 2018 then Rabais2 else 0 end) as rab_2018,
    sum(case when annee1 = 2017 then Rabais1 else 0 end) +
    sum(case when annee2 = 2017 then Rabais2 else 0 end) as rab_2018,
    from matable
    group by ID
    order by ID;
    quit;

    Merci!

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

Discussions similaires

  1. Comptage d'une variable selon plusieurs critères
    Par mathieuclem dans le forum Macro
    Réponses: 6
    Dernier message: 13/10/2017, 13h21
  2. [XL-2010] Nombre de mois dans une fourchette de dates selon plusieurs conditions
    Par Accessifiante dans le forum Excel
    Réponses: 4
    Dernier message: 18/12/2015, 18h06
  3. Réponses: 5
    Dernier message: 04/03/2014, 14h05
  4. Calcul d'une somme cumulée selon plusieurs conditions
    Par Lorinlo dans le forum SAS Base
    Réponses: 0
    Dernier message: 02/12/2013, 11h16
  5. Réponses: 1
    Dernier message: 22/06/2009, 19h13

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