Hoy en el trabajo nos ha hecho falta generar en SQL, un número aleatorio comprendido entre dos números para realizar unos procedimientos almacenados.
Después de buscar algo de información y revisar varias webs donde comentaban distintas formas, algunas erróneas, de hacer este cálculo, hemos llegado a la conclusión de que las dos formas más rápidas y claras de hacerlo son las siguientes:
//Obtener un número aleatorio entre [num_minimo] y [num_maximo] (ambos incluidos)
SELECT [num_minimo] + CONVERT(INT, ([num_maximo] - [num_minimo] + 1) * RAND())
SELECT ROUND((([num_maximo] - [num_minimo]) * RAND() + [num_minimo]), 0)
//En nuestro caso, necesitábamos obtener un número aleatorio entre 7 y 10
SELECT 7 + CONVERT(INT, (10 - 7 + 1) * RAND())
SELECT ROUND(((10 - 7) * RAND() + 7), 0)
Fuente original: https://blog.sqlauthority.com/2007/04/29/sql-server-random-number-generator-script-sql-query/