I need a different random number for each row in my table. The following seemingly obvious code uses the same random value for each row.
SELECT table_name,
RAND(CHECKSUM(NEWID()))
The above will generate a (pseudo-) random number between 0 and 1, exclusive. If used in a select, because the seed value changes for each row, it will generate a new random number for each row (it is not guaranteed to generate a unique number per row however).
Example when combined with an upper limit of 10 (produces numbers 1 - 10):
CAST(RAND(CHECKSUM(NEWID())) * 10 as INT) + 1
Transact-SQL Documentation:
CAST(): https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sqlRAND(): http://msdn.microsoft.com/en-us/library/ms177610.aspxCHECKSUM(): http://msdn.microsoft.com/en-us/library/ms189788.aspxNEWID(): https://docs.microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql