作者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/m.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