想要逐步生成数据,而是生成随机数

时间:2016-09-14 15:12:20

标签: sql sql-server

这里有人提供了一个脚本来帮助我生成增量数字,因此它看起来像下面的PIN号列。我运行脚本并注意到生成的最小PIN码是10000,真的应该是4310
表名:Citizen

Firstname       Lastname    PIN        Address  Age    other columns....
John             Smith      4310      20001     19
Andrew           Evans      4311      363252    30
Bill             Towny      4312      63322     67
Dame             Beaut      4313      34222     34



WITH PIN_NO
AS
(
SELECT 4310 + ROW_NUMBER() OVER(ORDER BY [All LP First Name]) NEW_PIN, *    
FROM [dbo].[C3MDMRevsBens]
)

UPDATE PIN_NO
SET   [Account Reference Number]  = CAST(NEW_PIN AS VARCHAR(10))

当我按照asc顺序订购PIN码时,下面是从记录1开始生成的号码.....

  select * from Citizen order by PIN asc

OR

 SELECT MIN(PIN) FROM Citizen 

10000
100000
100001
100002
100003
100004
100005
100006
100007
100008
100009
10001

由于

1 个答案:

答案 0 :(得分:1)

您的查询工作正常......我已经过测试。正如@bassrek所说,您的选择查询必须经过审核:

select * from Citizen order by CAST(Pin AS int)

因为Pin似乎是nvarchar而10000在4之前。

因此,您必须将pin列更改为int或在select中使用强制转换。