sql - Oracle SQL - 查找自动增量列的原始 ID
问题描述
我的 ERP 数据库中有一个表,其中包含有关某些事件的数据。它有开始日期、结束日期和一列显示事件是否是前一个事件的延续(sequential_id 引用 unique_id)。这是一个例子:
唯一身份 | 开始日期 | 结束日期 | 序列号 |
---|---|---|---|
001 | 2021-01-01 | 2021-01-15 | |
002 | 2021-02-01 | 2021-02-16 | 001 |
003 | 2021-03-01 | 2021-03-17 | 002 |
004 | 2021-03-10 | 2021-03-11 | |
005 | 2021-03-19 |
在上面的示例中,行 001、002 和 003 都是同一事件的一部分,而 004/005 是唯一事件,没有序列。如何以输出如下所示的方式对数据进行分组:
origin_id | 开始日期 | 结束日期 |
---|---|---|
001 | 2021-01-01 | 2021-03-17 |
004 | 2021-03-10 | 2021-03-11 |
005 | 2021-03-19 |
我试过使用 group by,但由于 sequence_id 是自动增量的,它不起作用。
提前致谢。
解决方案
您可以使用 modern match_recognize
,它是此类任务的最佳解决方案:
select *
from t
match_recognize(
measures
first(unique_id) start_unique_id,
first(start_date) start_date,
last(end_date) end_date
pattern (strt nxt*)
define nxt as sequential_id=prev(unique_id)
);
推荐阅读
- ruby - 使用 Ruby bot.rb:4:in 的高音机器人
': main:Object (NameError) 的未定义局部变量或方法 `twitter' - java - 使用 JENA 创建模型
- javascript - 警报处于活动状态时如何专注于选项卡?
- java - Java Spring可以在运行时添加或删除@Component吗?
- c++ - main 中 line 的等效语句是什么?
- c# - Telerik 下拉列表未正确填充
- java - 如何从哪个 JAR 中找到类加载器正在尝试加载特定类?
- c# - UserControl 中的 ItemsSource 绑定不起作用
- unity3d - 弹出式画布/面板不阻止 Raycast 到下面的按钮/UI
- javascript - 为什么我的 Slider Puzzle 游戏无法正常运行?