2016-06-03 2 views
1

내가 원하는 것은 0-99 사이의 각 플레이어에 대해 임의의 'PlayerWeighting'을 제공하는 select 테이블로 삽입을 만들었습니다. 그러나 내가 가지고있는 문제는 대신에 각 행에 대해 플레이어 가중치를 무작위의, 플레이어가있는 각 팀을 위해 그것을 할 것 같다 예를 들면 다음과 같습니다.각 행의 난수를 나열하는 방법

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는

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 

답변

2

이 의지는 당신에게 무작위 INT를 준다? '플레이어'에 대한 각 문자열의 끝에있는 숫자입니다 르가 키

abs(checksum(newid())) % 100 
0 내지 99

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

또는

는 NEWID()는, 그 각각의 행에 대한 고유 값을 생성하도록 사용된다. RAND()가 없습니다

+0

대단히 감사합니다. 다람쥐 –

관련 문제