【发布时间】:2012-08-25 06:58:46
【问题描述】:
我需要为员工列表分配一个从 1 到 1000 的唯一编号(或者无论有多少员工)。这些数字不能重复,并且需要按照员工列表的随机顺序排列。这些号码也需要每周重新生成,以便为员工分配一个新号码。
我尝试使用以下脚本,但是脚本速度很慢,并且它为所有员工返回相同的数字。
DECLARE @Random INT;
DECLARE @Upper INT;
DECLARE @Lower INT
SET @Lower = 1
SET @Upper = 1000
SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
select personnum, firstnm, lastnm, (SELECT @Random)
from person
任何人都可以阐明如何做到这一点吗? 谢谢
【问题讨论】:
-
为什么需要随机排序?
-
随机顺序是这样的,员工每周可以被排序和分配有限的班次,没有任何偏袒。
-
@Withdalot 。 . .对于这个问题,你可以考虑“ORDER BY newid()”
-
谢谢 Gordon,但我仍然需要一个应用程序可以用来排序和选择员工的编号。
-
是否要求没有员工连续两周赢得相同的号码?
标签: sql tsql random range unique