Проблемка с SQL Server, в каждой строке выборки одно и то же значение, у PostgreSQL, MySQL, Oracle, SQLite всё нормально.
Выкручиваемся создав представление и функцию.
create view m_vw_randView as select rand() as random_number go create function getRand() returns float as begin declare @returnValue float select @returnValue = random_number from m_vw_randView return @returnValue end go select rand() [rand], dbo.getRand() [getRand], * from (values(1),(2),(3))t(c1) rand getRand c1 0,63453611784667 0,96496883196861 1 0,63453611784667 0,0616408952549143 2 0,63453611784667 0,280773494594934 3
PostgreSQL v12 select *, random() from generate_series(1,3) t1(c1); | c1 | random | | --- | ------------------- | | 1 | 0.28302426362094124 | | 2 | 0.38171190130398003 | | 3 | 0.35524341401745474 |
MySQL v8.0 with recursive t1(c1) AS ( select 1 union all select c1 + 1 from t1 where c1 + 1 <= 3 ) select *, rand() from t1; | c1 | rand() | | --- | ------------------ | | 1 | 0.8239167740791261 | | 2 | 0.6890084265628909 | | 3 | 0.9732918413107208 |
Oracle Database 11g select level c1, dbms_random.value(0,1) random from dual connect by level <= 3 C1 RANDOM 1 0,457075791676919 2 0,885762460182671 3 0,555152770728942