J'essaie de définir deux indicateurs dans un ensemble de données, un pour les nouveaux clients et un pour les clients existants.Base SAS: INTNX pour identifier les clients nouveaux et existants
nouveaux clients = ont un original_purchase_date le mois précédent
Les clients existants = ont un original_purchase_date avant le mois précédent
Et je veux tirer dans toutes les activités pour les 18 derniers mois à compter du jour dernière le mois précédent où le dernier jour du mois précédent est
%let end='30Jun15'd;run;
C'est ce que j'ai jusqu'à présent et je sais que ce code est incorrect.
proc sql;
create table Cust as
select
*,
case when original_purchase_date between intnx('MONTH', &end, -1) and intnx('MONTH', &end) then 1 else 0 end as new,
case when original_purchase_date lt intnx('MONTH', &end, -1) then 1
else 0 end as Existing
from orders
where original_purchase_date between intnx('MONTH', &end, -1) and intnx('MONTH', &end, -1) -18;
quit;
% let end = '30juin2015'd; (pas 'run', et mieux écrire yyyy pendant des années) – realtemper
Qu'est-ce que ce code fait/ne fait pas que vous savez est incorrect? – Joe
Dans SAS, les expressions booléennes ont un résultat numérique égal à 1 si l'expression est vraie et 0 si elle est fausse. Vous pouvez donc écrire 'original_purchase_date entre intnx ('MONTH', & fin, -1) et intnx ('MOIS ', & fin) comme nouveau', sans clause 'case' –