<p>I need to generate multiple random values under SQL Server 2005 and somehow this simply wont work</p>

<pre><code>with Random(Value) as
(
    select rand() Value
        union all
    select rand() from Random

)select top 10 * from Random
</code></pre>

<p>Whats the preffered workaround?</p>

I'm currently using this:
```
```
with Random(Value) as
(
    select rand(checksum(newid())) Value
        union all
    select rand(checksum(newid())) from Random  
)select top 10 * from Random
```
```
but that seems overly hackish :S
Why doesnt rand get reevaluated in the first version?