Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将列中的值替换为小值_Sql Server_Sql Server 2008_Sql Server 2008 R2 - Fatal编程技术网

Sql server 将列中的值替换为小值

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。我想用一个小值替换该值。比如说,

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()