Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Asignar Valor Random en SQLServer

Estas en el tema de Asignar Valor Random en SQLServer en el foro de SQL Server en Foros del Web. Hola a todos Tengo una duda. Estoy intentando asignar un número aleatorio entre el 2 y el 7 para un campo en una tabla con ...
  #1 (permalink)  
Antiguo 08/04/2015, 09:10
 
Fecha de Ingreso: abril-2015
Mensajes: 2
Antigüedad: 9 años
Puntos: 0
Pregunta Asignar Valor Random en SQLServer

Hola a todos

Tengo una duda. Estoy intentando asignar un número aleatorio entre el 2 y el 7 para un campo en una tabla con la siguiente consulta
Código SQL:
Ver original
  1. UPDATE Tabla SET Campo = ROUND(RAND(CHECKSUM(NEWID())) * (2 - 7), 0) + 7

Pero esta consulta asigna una cantidad de registros aleatoria (17 para 2, 39 para 3, etc.) ¿Hay alguna forma que se asigne la misma cantidad de registros para cada uno de los valores entre el 2 y el 7 (si hay 120 registros en la tabla, por ejemplo, se asignen 20 a cada uno)?

Última edición por gnzsoloyo; 08/04/2015 a las 09:25
  #2 (permalink)  
Antiguo 08/04/2015, 09:50
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Asignar Valor Random en SQLServer

Entonces utiliza un WHILE, en conjunto con un SET ROWCOUNT
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 08/04/2015, 16:57
 
Fecha de Ingreso: abril-2015
Mensajes: 2
Antigüedad: 9 años
Puntos: 0
Respuesta: Asignar Valor Random en SQLServer

Muchas Gracias por la respuesta, encontré la forma de hacerlo (aunque no es tan aleatoria, es más bien secuencial), la dejo por si a alguien le sirve

Código SQL:
Ver original
  1. DECLARE @cantidad INT = (SELECT COUNT(campo) FROM Tabla);
  2. DECLARE @usuarios INT = 4;
  3.  
  4. WITH cantidad AS (SELECT top (@cantidad/@usuarios) * FROM Tabla)
  5. UPDATE cantidad SET Campo= '2';
  6.  
  7. WITH cantidad AS (SELECT top (@cantidad/@usuarios) * FROM Tabla)
  8. UPDATE cantidad SET Campo= '3';

Última edición por gnzsoloyo; 08/04/2015 a las 17:58
  #4 (permalink)  
Antiguo 09/04/2015, 08:51
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Asignar Valor Random en SQLServer

Código SQL:
Ver original
  1. WHILE EXISTS(SELECT Campo FROM Tabla WHERE Campo = 'algo') -- no se que condicion debe cumplir
  2. BEGIN
  3.  SET ROWCOUNT 20
  4.  UPDATE Tabla SET Campo = ROUND(RAND(CHECKSUM(NEWID())) * (2 - 7), 0) + 7
  5.  CONTINUE
  6. END
__________________
MCTS Isaias Islas

Etiquetas: random, registros, siguiente, tabla, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:50.