SQL Serverで指定範囲のランダムな数値を生成する

方法

ビューとUDFを1つづつ作ります。

--RAND()がFUNCTION内で使用できないので...
CREATE VIEW
	V_RAND
AS
SELECT RAND() RND
GO

--UDF
CREATE FUNCTION
	RANDNUM
(
	@START AS INT,
	@END AS INT
)
RETURNS INT
AS 
BEGIN
	RETURN (SELECT FLOOR(@START + (RND * (@END - @START + 1))) FROM V_RAND)
END
GO

使用例と結果

WITH
	T1 AS(
		SELECT
			1 SEQ
		UNION ALL
		SELECT
			SEQ + 1 SEQ
		FROM
			T1
		WHERE
			SEQ < 10
		)
SELECT
	DBO.RANDNUM(1, 2) [1, 2],
	DBO.RANDNUM(1, 10) [1, 10],
	DBO.RANDNUM(-5, 5) [-5, 5]
FROM
	T1
OPTION (MAXRECURSION 0)
1, 2        1, 10       -5, 5
----------- ----------- -----------
2           6           -4
1           10          -2
1           3           -4
1           4           5
2           6           -2
1           8           -5
2           2           -3
1           2           5
2           8           4
2           2           2

(10 行処理されました)

Work! Enjoy it!