Как сгенерировать случайное число с диапазоном X раз в SQL SERVER - PullRequest
1 голос
/ 03 марта 2020

Я хочу сгенерировать случайное число X раз с диапазоном. Я пытался создать функцию:

CREATE FUNCTION Random_Number (@Times INT, @Upper BIGINT,@Lower BIGINT, @randomvalue numeric(18,10))
RETURNS INT
AS
BEGIN
    DECLARE @Random BIGINT
    DECLARE @Row INT

    SET @Row = 1

    WHILE  @Row <= @Times
    BEGIN
        SELECT @Random = ROUND(((@Upper - @Lower -1) * @randomvalue + @Lower), 0)
        SET @Row = @Row + 1
    END
    RETURN @Random
END
GO


select dbo.Random_Number(5,2002100001,2002100010,RAND())

Запрос возвращает только одну строку:

#1 2002100003

Мне нужен следующий результат:

#1 2002100003
#2 2002100000
#3 2002100009
#4 2002100006
#5 2002100007

Возможно ли это?

1 Ответ

2 голосов
/ 03 марта 2020

Вы можете использовать рекурсивный подход:

with cte as (
     select 2002100001 as st, 2002100010 as ed
     union all
     select c.st + 1, c.ed
     from cte c
     where c.st < c.ed
)
select top (5) st
from cte
order by newid(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...