Sql server 将列中的值替换为小值
我在客户表中有一列,包含非常大的数字,如7351267613862。我想用一个小值替换该值。比如说,Sql server 将列中的值替换为小值,sql-server,sql-server-2008,sql-server-2008-r2,Sql Server,Sql Server 2008,Sql Server 2008 R2,我在客户表中有一列,包含非常大的数字,如7351267613862。我想用一个小值替换该值。比如说, 7351267613862 => 1 7371867613863 => 2 7351267993855 => 3 如何使用SQL脚本实现这一点 注意:这个值可能会在表中出现很多次。取决于您希望小数字的方式,不管怎样,行数()应该起作用 UPDATE D SET very_tall_number = small_value FROM ( SELECT *, sma
7351267613862 => 1
7371867613863 => 2
7351267993855 => 3
如何使用SQL脚本实现这一点
注意:这个值可能会在表中出现很多次。取决于您希望小数字的方式,不管怎样,行数()应该起作用
UPDATE D
SET very_tall_number = small_value
FROM
(
SELECT *, small_value = dense_rank() over (order by very_tall_number)
FROM yourtable
) as D
编辑:从row_number()更改为dense_rank()您可以使用row_number,这些值是唯一的,如客户ID,但在表中多次出现。此row_number()是否可以正常工作或产生冲突?因此您希望由客户运行
较小的_值
?对于每个客户
都从1开始,因为当我尝试此脚本时,它会将一个值替换为两个不同的值。我想要的是将唯一值替换为该唯一值(但比原始值小)。更改为使用dense\u rank()