我的列中包含非唯一值,如下所示:
ID COL_A
0 A
1 B
2 B
3 C
4 D
5 D
6 D
7 E
我想在产生以下输出的那两列之外选择一个偏移量:
ID COL_A OFFSET
0 A 0
1 B 0
2 B 1
3 C 0
4 D 0
5 D 1
6 D 2
7 E 0
应该应用偏移量,以便使用较低主键的值接收较低的偏移量。
我可能想出一个PL / SQL方法来实现这一点,但这在纯SQL中是否可行?
答案 0 :(得分:3)
row_number()
窗口功能正是医生所规定的:
SELECT id, col_a, ROW_NUMBER() OVER (PARTITION BY col_a ORDER BY id) - 1 AS offset
FROM mytable
答案 1 :(得分:1)
USE ROW_NUMBER
SELECT COL1,COL2,ROW_NUMBER() OVER (PARTITION BY COL2 ORDER BY Col1) Seq
FROM TableNAme