Bonjour, je suis tout novice dans le sas/sql, je commence à peine et j'ai déjà besoin d'un petit coup de pouce!
Voila j'ai un tableau de donnée, correspondant a des achats (fictifs) de clients etc...
Je vous montre a quoi ca ressemble en gros, ca ira plus vite que d'en faire une présentation écrite:
etc....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 id | montant | date | identifiant_client ___________________________________________________ 1 | 45 | 2008/02/03 | 850 2 | 46 | 2008/02/04 | 851 3 | 48.1 | 2008/03/03 | 853 4 | 41 | 2008/04/18 | 854 5 | 50 | 2008/04/20 | 857 6 | 80.7 | 2008/02/03 | 858 6 | 75 | 2008/02/04 | 858 6 | 20 | 2008/02/08| 858 6 | 15 | 2008/02/12| 858 7 | 45.2 | 2008/02/08 | 860 8 | 87.8 | 2008/02/10 | 868
j'essaye de recréer un tableau avec une seule instance de chaque client, pour ça je parcours la table et si un même client a fait plusieurs achats je fais la somme des montants.
Ca fait quelque chose comme ça:
proc sql;
select id, sum(montant) as total_achat, count(id) as nbrTrans, identifiant_client
from matablesql
quit;
(je suis désolé je n'ai plus le code parfaitement en tête, je ne suis pas chez moi) En tout cas, ma fonction (correctement écrite) fonctionne trés bien.
Et j'obtiens une table comme ça:
Jusque la tout va bien, mon problème est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 id | total_achat | nbrTrans | identifiant_client ____________________________________________________ 1 | 45 | 1 | 850 2 | 46 | 1 | 851 3 | 48.1 | 1 | 853 4 | 41 | 1 | 854 5 | 50 | 1 | 857 6 | 190.7 | 4 | 858 7 | 45.2 | 1 | 860 8 | 87.8 | 1 | 868
je souhaiterais rajouter une colonne avec l'interval de temps en jours qu'il peut y avoir entre plusieurs achat d'un même client s'il y en a eu.
Par exemple avec le cas du tableau ci dessus, je voudrais une colonne supplémentaire nomé par exemple "interval", dans laquelle il y aurait le nombre de jours séparant le premier achat du dernier.
Dans cet exemple le seul client qui ait réalisé plusieurs achats c'est le numéro 6. Donc dans sa colonne interval je voudrais avoir 9, car il s'est ecoulé 9jours entre son premier achat et son derniers achat.
Et pour les autres on aurait 0.
Je ne sais pas comment faire cela, le parcours se fait sur chaque ligne de la table de depart, mais par exemple la somme des montants se fait automatiquement. Pour les dates il me faudrait sauver la premiere, puis continuer le parcours, sauver la derniere, et effectuer la soustraction des dates. Mais Je ne sais pas comment faire.
Quelqu'un a t'il une idée?
Partager