如果我要按照每一个id,汇总cns的值。data chapt4.retain1;
input id txn_cde$ cns txn_dte$;
cards;
10 101 10 20070101
10 101 20 20080402
10 201 30 20050203
20 101 40 20040105
20 201 50 20040105
20 301 60 20070806
20 201 70 20050607
30 301 80 20070501
30 401 90 20070306
;
run;
proc sql;
create table sum as
select
id
,sum(cns) as cns
,count(*) as count
,sum(case when txn_cde in("101" "201") then 1 else 0 end) as cnt_condi
,min(txn_dte) as min_txn_dte
from chapt4.retain1;
group by 1
;
quit;
proc sort data= chapt4.retain1;by id txn_dte;run;
data test1;
set chapt4.retain1;
by id txn_dte;
retain min_dte sum_cns cnt cnt_condition;
if first.id then do;
min_dte=txn_dte;
sum_cns=0;
cnt=0;
cnt_condition=0;
end;
min_dte=min(min_dte,txn_dte);
sum_cns+cns;
cnt+1;
cnt_condition+(txn_cde in("101" "201"));
if last.id;
run;
其中group by 1 放在这里是什么意思,然后我应该只要对id排序就好了吧,为什么还要放一个txn_dte?