Problemet OP havde, mens du kun brugte rand() skyldes dets evaluering én gang pr. forespørgsel .
Fra dokumentationen :
Den fremgangsmåde, der er beskrevet nedenfor, fjerner optimering og undertrykker denne adfærd, så rand() evalueres én gang pr. række :
dateadd( second
, rand(cast(newid() as varbinary)) * 43200
, cast('08:00:00' as time) )
newid()genererer en unik værdi af typenuniqueidentifier;- værdien konverteres med
castskal bruges som frø irand([seed])funktion til at generere en pseudo-tilfældigfloatværdi fra 0 til 1 , og som frø er altid unik, den returnerende værdi er også unik .