可能重复:
How do I generate random number for each row in a TSQL Select?
我将excel表导入sql数据库,db表包含以下列: srno | passportnumber | FLIGHTNUMBER
现在当我导入excel表时,srno在导入后保持为NULL。现在我需要使用sql查询更新此Srno列,使其具有随机数或非随机序列号,但它应具有相同的srno值,其中护照号码相同,我的意思是: 如果护士编号abc123每次发生4次,则srno必须具有相同的值,例如:
srno | passportnumber|flightnumber
12 | ab32434 |AI-2011
13 | ab565235 |AI-2562
14 | ABC123 |AI-2025
14 | ABC123 |AI-2000
14 | ABC123 |AI-5623
15 |XYZ12334 |AI-5625
答案 0 :(得分:2)
with cte as (
select DENSE_RANK() OVER (ORDER BY passportnumber) as rank,
srno
from table)
update cte
set srno = rank;
这将按照护照的顺序给出序列号。修改这个以基于预先加载了randoms的查找字典提供真正随机的数字是微不足道的,我把它留作练习。
答案 1 :(得分:0)
如果同一护照号码出现不止一次,那么首先您应该考虑规范化您的数据,创建一个包含唯一Passport号码的表格以及一个身份增量为ON的ID列。
然后使用Passports ID(在您的情况下" srno")更新Flights表,并删除Column" passportnumber"