【问题标题】:replace the value in column with small value用小值替换列中的值
【发布时间】:2016-05-18 03:53:17
【问题描述】:

我在客户表中有一个列,其中包含非常大的数字,例如 7351267613862。我想用一个小值替换该值。例如,

7351267613862 => 1
7371867613863 => 2
7351267993855 => 3

如何使用 SQL 脚本来做到这一点。

注意:该值可能在表格中出现多次。

【问题讨论】:

标签: sql-server sql-server-2008 sql-server-2008-r2


【解决方案1】:

取决于你想要小数字的方式,无论如何,row_number() 应该可以解决问题

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

【讨论】:

  • 这些值是唯一的,例如客户 ID,但在表格中出现多次。
  • 这个 row_number() 是否可以正常工作或产生冲突?
  • 所以您希望small_value 由客户运行?对于每个 customer 从 1 开始?
  • 因为当我尝试这个脚本时,它用两个不同的值替换了一个值。我想要的是替换唯一值这个唯一值(但小于原始值)。
  • 改用dense_rank()
猜你喜欢
  • 1970-01-01
  • 2014-09-23
  • 2021-03-26
  • 2020-05-20
  • 1970-01-01
  • 2020-06-15
  • 2018-04-03
  • 2021-11-09
  • 2020-05-14
相关资源
最近更新 更多