繁体   English   中英

如何为非唯一值选择序号?

[英]How do I select sequential numbers for non-unique values?

我有一个具有非唯一值的列,如下所示:

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中这可能吗?

row_number()窗口函数正是医生所规定的:

SELECT id, col_a, ROW_NUMBER() OVER (PARTITION BY col_a ORDER BY id) - 1 AS offset
FROM   mytable

使用ROW_NUMBER

SELECT COL1,COL2,ROW_NUMBER() OVER (PARTITION BY COL2 ORDER BY Col1) Seq
FROM TableNAme

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM