如何为另一列的值插入相同的随机数?

时间:2015-03-23 15:56:16

标签: sql sql-server case-statement

在我的表'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

1 个答案:

答案 0 :(得分:1)

我认为你想在这种情况下避免使用newid()。我建议只使用Defect_Desription本身。

以下查询还修复了获取7位数字的逻辑:

UPDATE dbo.SERVICE_TICKET
    SET Defect_Description_Code = ABS(CHECKSUM(Defect_Description)) % 9000000 + 1000000;