Sql 如何列出每行的随机数

Sql 如何列出每行的随机数,sql,sql-server,Sql,Sql Server,我用一个选择表创建了一个insert-into,我想让它做的是给每个玩家一个0-99之间的随机“玩家权重”。然而,我的问题是,它似乎不是为每一行随机分配一名球员的权重,而是为每一名球员所在的球队随机分配权重。例如: PlayerID FirstName Surname PlayerWeighting TeamID 1 Chelsea Player1 87 1 2 Chelsea

我用一个选择表创建了一个insert-into,我想让它做的是给每个玩家一个0-99之间的随机“玩家权重”。然而,我的问题是,它似乎不是为每一行随机分配一名球员的权重,而是为每一名球员所在的球队随机分配权重。例如:

PlayerID   FirstName     Surname     PlayerWeighting  TeamID
1          Chelsea       Player1     87               1
2          Chelsea       Player2     87               1
3          Chelsea       Player3     87               1
4          Liverpool     Player1     73               2
5          Liverpool     Player2     73               2
相反,我希望它能做这样的事情:

PlayerID   FirstName     Surname     PlayerWeighting  TeamID
1          Chelsea       Player1     87               1
2          Chelsea       Player2     73               1
3          Chelsea       Player3     62               1
4          Liverpool     Player1     90               2
5          Liverpool     Player2     51               2
我需要在查询中更改什么才能使其工作(NumberID是“Player”每个字符串末尾的数字)

CREATE PROCEDURE [dbo].[Player_CreateWholeTeam]
    @TeamID INT

AS
SET NOCOUNT ON
BEGIN


    INSERT INTO dbo.Player (FirstName, Surname, PlayerWeighting, TeamID)
    SELECT TeamName AS FirstName, 'Player' + cast(NumberID AS VARCHAR (10)) AS Surname, CONVERT(INT, (RAND() * 99)) AS PlayerWeighting, @TeamID
        FROM dbo.Team t
        CROSS JOIN dbo.Number n
        WHERE TeamID = @TeamID
        AND n.NumberID <= 20

END
创建过程[dbo]。[Player\u createwholetam]
@TeamID INT
作为
不计较
开始
插入dbo.Player(名字、姓氏、玩家权重、团队ID)
选择TeamName作为名字,“玩家”+cast(numberrid作为VARCHAR(10))作为姓氏,转换(INT,(RAND()*99))作为玩家权重,@TeamID
来自dbo.t队
交叉连接dbo.Number n
其中TeamID=@TeamID

n.NumberID这将给出0到99之间的随机整数

abs(convert (bigint, convert(varbinary(20), newid()))) % 100


它们的关键是使用NEWID(),它将为每一行生成一个唯一的值。RAND()不

非常感谢Squirrel
abs(checksum(newid())) % 100