【发布时间】:2020-04-03 08:48:59
【问题描述】:
我有一个 oracle 表,其中 ref_id 是标志字段是数据类型,ORN 是每个 ref_id 中数据的顺序:
ref_id data ORN flag
1 100 0 0
1 200 1 0
1 300 2 0
1 400 3 0
1 110 0 1
1 210 1 1
1 150 0 2
1 250 1 2
1 350 2 2
1 450 3 2
2 500 0 0
2 600 1 0
2 700 2 0
2 800 3 0
2 120 0 1
2 220 1 1
2 320 1 1
2 420 1 1
2 170 0 2
2 270 1 2
2 370 2 2
2 470 3 2
我需要将数据分组如下:
- 标志 0 中的最后一个数据与标志 1 中的第一个数据
- 标志 1 中的每个数据与下一个数据(标志 1 中的数据数为 不修复)
- 标志 1 中的最后一个数据与标志 2 中的第一个数据
所以新表将是这样的:
ref_id data_1 data_2
1 400 110
1 110 210
1 210 150
2 800 120
2 120 220
2 220 320
2 320 420
2 420 170
任何提示如何在不使用循环的情况下完成此操作?
【问题讨论】:
标签: sql oracle select where-clause window-functions