我需要正确的 Oracle SQL 代码帮助来组合水晶报表命令对象的行。这是我正在处理的更大查询的一部分,并且在过去几天中被卡住了。
例如。如果列如下所示
PatId In_time Out_time
151 01/01/2012 07:00:00 am 01/01/2012 10:00:00 am
151 01/01/2012 11:00:00 am 01/02/2012 08:00:00 am
151 01/02/2012 11:00:00 am 01/02/2012 01:00:00 pm
151 01/03/2012 08:00:00 am 01/03/2012 03:00:00 pm
151 01/06/2012 03:30:00 pm 01/09/2012 07:00:00 am
167 01/03/2012 01:30:00 pm 01/09/2012 07:00:00 am
167 01/13/2012 03:30:00 pm 01/14/2012 07:00:00 am
167 01/14/2012 11:30:00 am 01/15/2012 11:30:00 am
167 01/18/2012 12:00:00 pm 01/19/2012 03:00:00 am
在一个 PatId 中,代码应该将一行的 Out_time 与下一行的 In_time 进行比较,并检查时间间隔是否大于 48 小时。如果不是,则将其视为同一访问的一部分。我希望每个 PatID 和访问一个结果行,最小(In_time)和最大(Out_time)。访问(结果行)本身的时间跨度可能大于 48 小时。
对于此示例,对于 PatId 151,第一行的 out_time 和第二行的 In_time 之间的时间差小于 48 小时。第二行的 Out_time 和第三行的 In_time 以及第三行和第四行之间的时间差也小于 48 小时。在此之后,第 4 行的 Out_time 和第 5 行的 In_time 之间的差距大于 48 小时。PatId 151 的结果应如下所示,EmpId 167 的结果相同,链接应继续,直到发现大于 48 小时的间隙。
所以上表的结果应该显示为,
PatId In_time Out_time
151 01/01/2012 07:00:00 am 01/03/2012 03:00:00 pm
151 01/06/2012 03:30:00 pm 01/09/2012 07:00:00 am
167 01/03/2012 01:30:00 pm 01/09/2012 07:00:00 am
167 01/13/2012 03:30:00 pm 01/15/2012 11:30:00 am
167 01/18/2012 12:00:00 pm 01/19/2012 03:00:00 am
我无法获得有关如何比较和合并行的逻辑。
提前致谢, 阿比