我遇到了一个看似简单的问题,但我无法找到解决方案。希望在这里有更多Oracle SQL知识的人能够帮助我。
本质上,我正在建立一个按完成日期排名的作业列表,这很简单。它们之间的共同链接是它们都是为同一客户(不同编号)和在同一位置(不同编号)执行的。我的问题是,我需要找到一种方法来在两个作业之间的持续时间超过30天时中断并重新开始该排名/计数。以下是我正在研究的简化版本:
由于第二个工作超出了30天的时间范围,因此下一个工作应该从一开始重新计数。我的问题是,我找不到一种方法来分区数据,以便识别这个标准并重新开始计数。没有另一列可以让我以这种方式分区行号或密集等级(例如,常见的排序键或每个30天链的系统作业顺序)。
我已经尝试了大约20种不同的方法来解析这些数据,但都没有成功,所以任何帮助或关于如何实现这一点的想法将非常感激。我有大约50,000行数据需要应用这种排序。我已经在工作中自学SQL约一年了,这个问题已经超出了我的知识限制。
本质上,我正在建立一个按完成日期排名的作业列表,这很简单。它们之间的共同链接是它们都是为同一客户(不同编号)和在同一位置(不同编号)执行的。我的问题是,我需要找到一种方法来在两个作业之间的持续时间超过30天时中断并重新开始该排名/计数。以下是我正在研究的简化版本:
JOBCOUNT ACCTNUM LOCNUM COMPDATE DURATION
-------- ------- ------ -------- --------
2 001 003 8/21/2015 16:47 15.48763889
3 001 003 10/5/2015 11:31 41.98304398
4 001 003 10/19/2015 9:59 13.21804398
5 001 003 11/13/2015 15:23 24.43752315
6 001 003 11/30/2015 19:19 11.35537037
按照我希望的方式,由于第二行超过30个字,应该这样处理:
JOBCOUNT ACCTNUM LOCNUM COMPDATE DURATION
-------- ------- ------ -------- --------
2 001 003 8/21/2015 16:47 15.48763889
1 001 003 10/5/2015 11:31 41.98304398
2 001 003 10/19/2015 9:59 13.21804398
3 001 003 11/13/2015 15:23 24.43752315
4 001 003 11/30/2015 19:19 11.35537037
由于第二个工作超出了30天的时间范围,因此下一个工作应该从一开始重新计数。我的问题是,我找不到一种方法来分区数据,以便识别这个标准并重新开始计数。没有另一列可以让我以这种方式分区行号或密集等级(例如,常见的排序键或每个30天链的系统作业顺序)。
我已经尝试了大约20种不同的方法来解析这些数据,但都没有成功,所以任何帮助或关于如何实现这一点的想法将非常感激。我有大约50,000行数据需要应用这种排序。我已经在工作中自学SQL约一年了,这个问题已经超出了我的知识限制。