Il problema OP avuto usando solo rand()
è dovuto alla sua valutazione una volta per query .
Dalla documentazione :
L'approccio descritto di seguito rimuove l'ottimizzazione e sopprime questo comportamento, quindi rand()
viene valutato una volta per riga :
dateadd( second
, rand(cast(newid() as varbinary)) * 43200
, cast('08:00:00' as time) )
newid()
genera un valore univoco di tipouniqueidentifier
;- il valore viene convertito con
cast
da usare come seme inrand([seed])
funzione per generare unfloat
pseudo-casuale valore da 0 a 1 e come seme è sempre unico anche il valore restituito è unico.