【发布时间】:2018-10-19 11:10:43
【问题描述】:
我有一个表格,其中包含按彼此接近的日期分组的 ID 和日期
1 24/05/2010
10 18/06/2012
10 20/06/2012
10 21/06/2012
10 21/02/2014
10 04/07/2014
10 12/12/2016
1004 18/07/2016
1007 01/01/2017
1007 02/02/2017
1007 03/02/2017
1007 31/08/2017
create table tt ( id int, startdate date);
Insert into TT values (1,'24/05/2010');
Insert into TT values (10,'18/06/2012');
Insert into TT values (10,'20/06/2012');
Insert into TT values (10,'21/06/2012');
Insert into TT values (10,'21/02/2014');
Insert into TT values (10,'04/07/2014');
Insert into TT values (10,'12/12/2016');
Insert into TT values (1004,'18/07/2016');
Insert into TT values (1007,'01/01/2017');
Insert into TT values (1007,'02/02/2017');
Insert into TT values (1007,'03/02/2017');
Insert into TT values (1007,'31/08/2017');
我正在尝试合并重叠日期和最大间隔为 90 天的日期,并将它们列在单行中,显示按 id 分组的日期范围,以便最终结果如下:
1 24/05/2010 24/05/2010
10 18/06/2012 21/06/2012
10 21/02/2014 21/02/2014
10 04/07/2014 04/07/2014
10 12/12/2016 12/12/2016
1004 18/07/2016 18/07/2016
1007 01/01/2017 03/02/2017
1007 31/08/2017 31/08/2017
【问题讨论】:
-
提示:使用 max、min 和 group by 来满足您的要求。如果您遇到任何问题,请尝试告诉我们
-
感谢回复,但这不会达到我的目标: select studyid, min(startdate), max(startdate) from temp_ste group by studyid;将产生: 1 24/05/2010 00:00 24/05/2010 00:00 10 18/06/2012 00:00 12/12/2016 00:00 1004 18/07/2016 00:00 18/07/ 2016 00:00 1007 01/01/2017 00:00 31/08/2017 00:00
-
这个问题 100% 重复,但我无法快速找到匹配项。对于答案,通常使用
lag()和分析型sum(),例如here。 -
感谢@ponderstibbons 完美运行!
标签: oracle date range timeline