作者ip1020 (yummy)
看板Statistics
标题[问题] SAS多对多合并
时间Sun Feb 19 20:34:49 2017
已趴文
想请板上高手帮忙(300P表心意)
我有两个database A.B
A的资料型态
SEQ DATE
1 2016/03/03
1 2016/03/05
1 2016/05/04
2 2014/07/30
2 2015/05/12
2 2015/09/09
2 2016/01/01
3 2017/02/01
B的资料型态
SEQ IN_DATE OUT_DATE
1 2016/03/01 2016/03/09
1 2016/05/02 2016/05/05
1 2016/06/04 2016/06/09
1 2016/07/08 2016/09/21
1 2016/09/30 2016/10/01
2 2014/06/03 2014/06/21
2 2014/07/31 2014/08/21
2 2015/05/11 2015/09/11
2 2016/01/01 2016/01/09
3 2016/09/22 2016/09/28
3 2017/02/09 2017/02/11
我想要将A.B进行多对多合并
也就是要将A资料中的日期套进B资料的区间
进而计算无法套在区间内的笔数
预计合并後如下
SEQ IN_DATE OUT_DATE DATE
1 2016/03/01 2016/03/09 2016/03/03
1 2016/03/01 2016/03/09 2016/03/05
1 2016/05/02 2016/05/05 2016/05/04
2 .(对不到) .(对不到) 2014/07/30
2 2014/05/11 2014/09/11 2015/05/12
2 2015/05/11 2015/09/11 2015/09/09
2 2016/01/01 2016/01/09 2016/01/01
3 .(对不到) .(对不到) 2017/02/01
因为资料很多 而且又是多对多合并
目前处理一周还是写不出来合并方法
合并又必需配对时间这样有办法用proc sql left join写吗?
请板上各位高手帮帮忙或惠赐建议方法罗^^拜托了
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.210.43.141
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1487507691.A.DE0.html
※ 编辑: ip1020 (218.210.43.141), 02/19/2017 20:38:45
※ 编辑: ip1020 (218.210.43.141), 02/19/2017 20:55:43
1F:推 anniecs: proc sql; create table new as select x.in_date, x.out 02/20 00:51
2F:→ anniecs: _date, y.date from data1 as y left join data2 as x wh 02/20 00:51
3F:→ anniecs: ere x.in_date<=y.date<=x.out_date; quit; 02/20 00:51
4F:→ ip1020: 先谢谢a大帮忙 早上试跑 现以下错误 02/20 12:28
6F:→ ip1020: 少了DATA1的SEQ和DATA2的SEQ的连结要写在ON吗? 02/20 12:31
7F:→ ip1020: On x.seq=y.seq; quit; 还是出现ㄧ样error 02/20 12:32
9F:→ anniecs: 那把seq跟where的东西都放在on里面,我test的结果是对的 02/20 16:33
10F:→ anniecs: 你试试看唷~ 02/20 16:33
11F:推 iamyiting: Out_date前面漏写了x. 吗 02/20 22:38
12F:→ ip1020: 後来下午test a大提供的语法是可以的 不过资料量太大 还没 02/21 00:20
13F:→ ip1020: 时间验证单笔资料无误 等我明後天确认後再回报 看起来是没 02/21 00:20
14F:→ ip1020: 问题 02/21 00:20
15F:→ ip1020: 先谢谢a大帮忙罗 300p以表小小谢意^^ 02/21 00:22
16F:→ ip1020: 感谢i大提醒 那边我有修正了^^ 02/21 00:26
17F:→ ip1020: 另外想请问 跑出来的new 资料笔数应该要跟data1ㄧ样吗?因 02/21 11:53
18F:→ ip1020: 为合并之後多了好多笔(?) 02/21 11:53
19F:→ anniecs: 请check住院期间是否有overlap,程式区间是左右都包,如 02/22 14:45
20F:→ anniecs: 果住院区间是1/1-2/1与2/1-3/1,那2/1这天就会出现在两 02/22 14:45
21F:→ anniecs: 住院期,资料就会重覆。 02/22 14:45
22F:→ ip1020: 了解了 overlap的问题确实有存在资料中 但不是住院data啦 02/24 21:24
23F:→ ip1020: 不过性质有接近XD 哈 02/24 21:24