Oracle SQL如何为表新增列存储同Keyword分组下的下一条Created_Date值
Oracle SQL 同分组取相邻下一行时间实现方案
你需要的效果可以直接用Oracle内置的LEAD分析函数实现,不需要关联子查询,性能更好,语法也简洁。
假设你的表名为your_table_name,替换为实际表名即可使用如下查询:
SELECT Keyword, Created_Date, LEAD(Created_Date) OVER ( PARTITION BY Keyword ORDER BY Created_Date ) AS Next_Created_Date FROM your_table_name;
各参数作用说明:
PARTITION BY Keyword:指定按照Keyword字段分组,每个分组内的计算互不干扰ORDER BY Created_Date:指定每个Keyword分组内的排序规则,按照创建时间升序排列,保证“下一条”是时间更晚的记录LEAD(Created_Date):取同一分组内、排序后当前行的下一行的Created_Date值,分组的最后一行没有下一行时,默认返回NULL
如果需要给最后一行的Next_Created_Date设置自定义默认值,可以给LEAD传第三个参数,比如要设置为9999-12-31,写法如下:
LEAD(Created_Date, 1, DATE '9999-12-31') OVER ( PARTITION BY Keyword ORDER BY Created_Date ) AS Next_Created_Date

内容的提问来源于stack exchange,提问作者Fatih77
相关产品推荐
相关产品推荐

