sql合併複雜的表

這是我在人大經濟論壇看到的帖子,張貼如下:

本帖最後由 我想在sas中用sql實現如下問題:
例如有表一:
ID    age     sex
1      25       f
2      20      m
表二:
ID   product
1      a
1      b
2      a
1      b
2      a
如何合併成這樣一個表
ID   age   sex     a      b
1     25    f         1      2
2     20    m       2      0

 

 

 

解決:

proc sql;
        create table c as
        select   A.*
                        ,B.product
                        ,count(*) as t
        from a A
        join b B
        on A.id=B.id
        group by A.id,age,sex,product ;
quit;

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

proc sql;
  select a.* , a, b
  from a as a
  left join (select id,  sum(product='a') as a, sum(product='b') as b  from b group by id) c
        on A.id=C.id
;
  quit;proc sql;
        create table c as
        select   A.*
                        ,B.product
                        ,count(*) as t
        from a A
        join b B
        on A.id=B.id
        group by A.id,age,sex,product ;
quit;

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

proc sql;
  select a.* , a, b
  from a as a
  left join (select id,  sum(product='a') as a, sum(product='b') as b  from b group by id) c
        on A.id=C.id
;
  quit;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章