如何对 SAS 中多个表中的单个条目求和

How to sum individual entries from multiple tables in SAS

我有:

A 队

Material Accommodation Travel

1 月 8 日 12 日 10 日

2 月 8 日 15 日 30 日

3 月 9 日 12 日 20 日

B 队

Material Accommodation Travel

1 月 4 日 18 日 20 日

2 月 7 日 14 日 20 日

3 月 6 日 12 日 10 日

C 队

Material Accommodation Travel

1 月 5 日 18 日 10 日

2 月 9 日 15 日 30 日

3 月 9 日 12 日 10 日

我想要的:

总和

Material Accommodation Travel

1 月 17 日 48 日 40 日

2 月 24 日 44 日 80 日

3 月 24 日 36 日 40 日

我想对三个表中的每个条目求和。

复制表格的代码:

proc sql;
   create table TeamA
       (Material num, Accommodation num, Travel num);

insert into TeamA
    values(8,12,10)
    values(8,15,30)
    values(9,12,20);
run;


proc sql;
   create table TeamB
       (Material num, Accommodation num, Travel num);

insert into TeamB
    values(4,18,20)
    values(7,14,20)
    values(6,12,10);
run;


proc sql;
   create table TeamC
       (Material num, Accommodation num, Travel num);

insert into TeamC
    values(5,18,10)
    values(9,15,30)
    values(9,12,10);
run;

使用SQLunion all corresponding语句和sql聚合函数sum():

proc sql;
   create table TeamA
       (month char(3), Material num, Accommodation num, Travel num);

insert into TeamA
    values('Jan',8,12,10)
    values('Feb',8,15,30)
    values('Mar',9,12,20);
run;


proc sql;
   create table TeamB
       (month char(3), Material num, Accommodation num, Travel num);

insert into TeamB
    values('Jan',4,18,20)
    values('Feb',7,14,20)
    values('Mar',6,12,10);
run;


proc sql;
   create table TeamC
       (month char(3), Material num, Accommodation num, Travel num);

insert into TeamC
    values('Jan',5,18,10)
    values('Feb',9,15,30)
    values('Mar',9,12,10);
run;

proc sql noprint;
  create table allteam as 
  select month, 
    sum(material) as material,
    sum(accommodation) as accommodation,
    sum(travel) as travel
  from (
    select * from teama
    union all corresponding
    select * from teamb
    union all corresponding
    select * from teamc
  )
  group by month
  ;
quit;