为 SQL Server 中的每个唯一编号分配新值
Posted
技术标签:
【中文标题】为 SQL Server 中的每个唯一编号分配新值【英文标题】:Assign new value to every unique number in SQL Server 【发布时间】:2020-10-09 07:30:54 【问题描述】:我是 SQL Server 新手,正在尝试做一些操作
样本数据:
Amount | BillID
-------+-------
500 | 10009
500 | 1492
350 | 15892
222 | 15596
899 | 20566
350 | 9566
如何根据Amount
列创建一个包含序列号的新列,以便输出如下所示:
Amount | BillID | unique
-------+--------+-------
500 | 10009 | 1
500 | 1492 | 1
350 | 15892 | 2
222 | 15596 | 3
899 | 20566 | 4
350 | 9566 | 2
【问题讨论】:
【参考方案1】:我会推荐dense_rank()
:
select t.*, dense_rank() over(order by amount) rn
from mytable t
这会为每个amount
分配一个唯一的递增编号。最小的数量获得排名1
,并通过增加amount
递增分配数量。这不完全是您显示的输出(没有明显的排序逻辑逻辑),但我认为这就是您本质上想要的逻辑。
【讨论】:
以上是关于为 SQL Server 中的每个唯一编号分配新值的主要内容,如果未能解决你的问题,请参考以下文章