不使用MSSQL或DB2或Oracle.没有CTE.没有OVERLAP谓词.没有INTERVAL数据类型.情况:在要修理的车辆上工作不能开始,直到收到所有订购的部件.零件可在维修开始前多次订购.我们需要提取车辆在"零件保持"的时间
因此,对于标识为id = 1的车辆,在4个不同的场合下订购(d1)并接收(d2)
ID d1 d2
1 8/1 8/8
1 8/2 8/6
1 8/12 8/14
1 8/3 8/10
8/1 8/8
d1 d2
|-------------------------------|
8/2 8/6 8/12 8/14
d1 d2 d1 d2
|---------------| |----------|
8/3 8/10
d1 d2
|---------------------|
8/1 8/14
|---------------------------------------------------------| = 13 days
8/10 8/12
|--------------------------------------| + |----------| = parts hold = 11 days
Run Code Online (Sandbox Code Playgroud)
如上所示,开始工作的等待时间(假设车辆可用于工作的日期为8/1)为13天.等待零件所花费的实际时间是11天,这是我们需要从数据中得出的数字.实际的日期时间数据将是我们将从中提取小时数的时间戳,我们在此示例数据中使用日期以简化演示.我们正在努力生成一个集合(不是psm,而不是udf,而不是游标)的解决方案.TIA