oracle查询结果同一组取最早开始时间和最晚完成时间

本文详细介绍LAST_VALUE和FIRST_VALUE窗口函数的使用方法,并通过具体案例演示如何计算订单各环节的首尾时间,帮助读者掌握这两个函数在SQL查询中的应用。

场景:一张定单有多个环节,一个环节可能出现多次,计算每个环节从派发到完成的时间

1.介绍 LAST_VALUE 和 FIRST_VALUE 函数

函数的作用恰如其名,取出首尾记录值。

需要注意的是:
first_value()是取第一个值,没有异议。
last_value()默认统计范围是 rows between unbounded preceding and current row,取的是当前行的尾值;如需取当前所有环节的尾值,需要指定:rows between unbounded preceding and unbounded following

2.sql实战示例

SELECT DISTINCT LAST_VALUE(a.COMPLETE_TIME)
                         OVER (PARTITION BY a.ACTIVITY_INST_NAME
                             ORDER BY a.CREATE_TIME ROWS BETWEEN unbounded preceding AND unbounded following)  AS LAST_TIME_VALUE,
              FIRST_VALUE(a.CREATE_TIME)
                          OVER (PARTITION BY a.ACTIVITY_INST_NAME
                              ORDER BY a.CREATE_TIME ROWS BETWEEN unbounded preceding AND unbounded following) AS FIRST_TIME_VALUE,
              a.ACTIVITY_INST_NAME
FROM V_WS_NEWLOCALCIRCUIT_TASK a
WHERE 1=1
 AND A.SHEET_ID = 'ZJF-388-191016-00071'

原始数据与查询结果对比:
在这里插入图片描述
有木有解决电脑前你的问题,欢迎点赞和讨论~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值