sql合并复杂的表

来源:互联网 发布:大庆油田网络客服电话 编辑:程序博客网 时间:2024/06/05 09:10

这是我在人大经济论坛看到的帖子,张贴如下:

本帖最后由 我想在sas中用sql实现如下问题:
例如有表一:
ID    age    sex
   25      f
   20     m
表二:
ID   product
   a
   b
   a
   b
   a
如何合并成这样一个表
ID   age  sex        b
   25           2
   20          0

 

 

 

解决:

proc sql;
       create tablec as
       select  A.*
                 ,B.product
                  ,count(*) ast
       from aA
       join bB
       onA.id=B.id
       group byA.id,age,sex,product ;
quit;

proc transpose data=c out=d(drop=_name_);
       by id agesex;
       var t;
       idproduct;
run;A little simplifaction will save you a transpose :).

proc sql;
  select a.* , a, b
  from a as a
  left join (selectid,  sum(product='a') as a,sum(product='b') as b  from bgroup by id) c
       onA.id=C.id
;
  quit;proc sql;
       create tablec as
       select  A.*
                 ,B.product
                  ,count(*) ast
       from aA
       join bB
       onA.id=B.id
       group byA.id,age,sex,product ;
quit;

proc transpose data=c out=d(drop=_name_);
       by id agesex;
       var t;
       idproduct;
run;A little simplifaction will save you a transpose :).

proc sql;
  select a.* , a, b
  from a as a
  left join (selectid,  sum(product='a') as a,sum(product='b') as b  from bgroup by id) c
       onA.id=C.id
;
  quit;
0 0
原创粉丝点击