编号组结果为唯一标识符

时间:2018-11-16 02:14:23

标签: sql-server-2008

我正在尝试创建一个查询,该查询会产生唯一的标识符(帐号)。

我需要实现的是为Col1中的每个唯一条目创建另一个行号/ UI。

我一直在尝试以下查询

elect  col1,col2 ,(DENSE_RANK() OVER( ORDER BY col1,col2))  as UI from [TABLE]

这就是我得到的:

col1	col2	UI
34	1	1
1973	448	2
355	3924	3
18709	8168	4
5201	9211	5
5762	9294	6
3864	10669	7
4914	12568	8
4914	12569	9
42465	921 	10

但是我需要它看起来像这样:

col1	col2	UI
34	1	1
1973	448	2
355	3924	3
18709	8168	4
5201	9211	5
5762	9294	6
3864	10669	7
4914	12568	8
4914	12569	8
42465	921 	9

1 个答案:

答案 0 :(得分:0)

您需要定义一种方法-更宽松地-对col2进行排名,例如使用除法

select
   col1,col2 
  ,DENSE_RANK() OVER( ORDER BY col1,col2/10)  as newUI 
from mytable


+----+-------+-------+-------+
|    | col1  | col2  | newUI |
+----+-------+-------+-------+
|  1 |    34 |     1 |     1 |
|  2 |   355 |  3924 |     2 |
|  3 |  1973 |   448 |     3 |
|  4 |  3864 | 10669 |     4 |
|  5 |  4914 | 12568 |     5 |
|  6 |  4914 | 12569 |     5 |
|  7 |  5201 |  9211 |     6 |
|  8 |  5762 |  9294 |     7 |
|  9 | 18709 |  8168 |     8 |
| 10 | 42465 |   921 |     9 |
+----+-------+-------+-------+