在我的表'SERVICE_TICKET'
中有两列,即'Defect_Description'
和'Defect_Description_Code'
。
我想用1000000到9999999(7位数字)之间的随机数填充第二列。但是,对于第一列中的相等值,随机数应该相同。例如,如果'Defect_Description'= 'microphone for hands-free device',
'Defect_Description_Code'
应始终等于相同的任意数字,例如
'8374917'。。
我想出了以下表达式,但这会为每个'Defect_Description'
创建一个不同的数字。为了获得相同的数字,我需要更改什么?
UPDATE dbo.SERVICE_TICKET
SET Defect_Description_Code =
CASE Defect_Description
WHEN 'microphone for hands-free device' THEN (ABS(CHECKSUM(NewId())) % 1111111 + 9999999)
ELSE '-'
END
答案 0 :(得分:1)
我认为你想在这种情况下避免使用newid()
。我建议只使用Defect_Desription
本身。
以下查询还修复了获取7位数字的逻辑:
UPDATE dbo.SERVICE_TICKET
SET Defect_Description_Code = ABS(CHECKSUM(Defect_Description)) % 9000000 + 1000000;