作者herepurple (*)
站内Statistics
标题[程式] 如何计算日期重叠天数?
时间Tue Feb 26 21:07:26 2013
[软体程式类别]:SAS
[程式问题]:资料处理
[软体熟悉度]:
新手(不到1个月)
[问题叙述]:
需要计算日期重叠天数,原始资料日期已转为yymmddn8.格式
id in_date end_date day
A 20080101 20080130 29
A 20080102 20080122 20
A 20080120 20080203 14
B 20081231 20090110 10
B 20090101 20090108 7
想整理成以下资料,in_date与end_date重叠部分依id,增加一个变数dup_day
id in_date end_date day dup_day
A 20080101 20080130 29 28 (注1)
A 20080102 20080122 20 20 (注2)
A 20080120 20080203 14 10 (注3)
B 20081231 20090110 10 7 (注4)
B 20090101 20090108 7 7 (注5)
B 20090108 20090109 1 0
B 20090110 20090130 20 0
注1. 与第2次重叠0102~0122为10天;与第3次重叠0120~0130为10天;
但0120~0122重覆计算了2天,所以dup_day=10+10-2=8
注2. 与第1次重叠0102~0122为20天;与第3次重叠0120~0122为2天;
但0120~0122重覆计算了2天,所以dup_day=20+2-2=20
注3. 与第1次重叠0120~0130为10天;与第2次重叠0120~0122为2天;
但0120~0122重复计算了2天,所以dup_day=10+2-2=10
注4. 与0101~0108重叠7天,所以dup_day=7
注5. 与1231~0110重叠7天,所以dup_day=7
不知道是否我的想法有清楚表达,
或者是思考逻辑比较复杂,一直都想不到好方法
或是有办法抓该id的最大日期区间,再扣掉没有重复的区间,
请教各位前辈 这有解吗?
谢谢
-----------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.199.54
※ 编辑: herepurple 来自: 220.135.199.54 (02/26 21:25)
1F:推 imaltar:你在算多重用药吗? 02/26 21:49
2F:→ herepurple:是计算重复领药没错 我想得太复杂了吗? 02/27 00:03
4F:→ imaltar:可以参考这一篇 抓区间 02/27 00:35
5F:→ herepurple:太感谢了 来试试 有成功会上来报告 02/27 08:40