【发布时间】:2018-03-13 16:44:22
【问题描述】:
我的 oracle 表中有数据,其中的名称和日期范围如下:
Name From To
Lopes, Janine 07-Jun-17 16-Jul-17
Lopes, Janine 17-Jul-17 23-Jul-17
Lopes, Janine 24-Jul-17 31-Aug-17
Baptista, Maria 23-Dec-16 19-Feb-17
Deyak,Sr, Thomas 22-Jan-17 18-Apr-17
Deyak,Sr, Thomas 27-Apr-17 14-May-17
Deyak,Sr, Thomas 15-May-17 21-May-17
Deyak,Sr, Thomas 22-May-17 28-May-17
Deyak,Sr, Thomas 29-May-17 31-May-17
Serrentino, Joyce 18-Mar-17 30-Apr-17
More, Cathleen 30-Jul-17 13-Aug-17
More, Cathleen 14-Aug-17 20-Aug-17
More, Cathleen 21-Aug-17 27-Aug-17
More, Cathleen 28-Aug-17 03-Sep-17
More, Cathleen 04-Sep-17 10-Sep-17
More, Cathleen 11-Sep-17 24-Sep-17
Barrows, Michael 30-Jan-17 19-Mar-17
Barrows, Michael 20-Mar-17 26-Mar-17
Barrows, Michael 27-Mar-17 02-Apr-17
Barrows, Michael 03-Apr-17 07-Apr-17
大多数情况下,对于一位用户来说,to date 比 from date 大一并且是连续的,但在某些情况下,数据会中断,所以我的输出应该如下所示:
Name From To
Lopes, Janine 07-Jun-17 31-Aug-17
Baptista, Maria 23-Dec-16 19-Feb-17
Deyak,Sr, Thomas 22-Jan-17 18-Apr-17
Deyak,Sr, Thomas 27-Apr-17 31-May-17
Serrentino, Joyce 18-Mar-17 30-Apr-17
More, Cathleen 30-Jul-17 24-Sep-17
Barrows, Michael 30-Jan-17 07-Apr-17
如果我执行 min(from) 和 max(to),我会丢失一些记录,例如 Thomas。 我应该怎么写sql来获取数据是我需要的。
【问题讨论】:
-
这是在 sql server rextester.com/EVU37046 中执行此操作的一种方法。这应该给你一个开始的想法。将函数替换为相关的 oracle 函数
-
您是根据实际输入的人的总天数还是从From到To的总天数来查找?
-
@Shawn 我希望通过将 from 和 to date 作为 max(from) 和 max(to) 来获取分组,如果日期范围内没有中断但如果有中断我希望它开始一个新的范围
-
明白了,我起初误读了这个问题,并以为您在寻找天数。您也许可以使用 LEAD 或 LAG 函数。
标签: sql database oracle oracle12c