Your first subquery doesn't have a SELECT statement. That'll be one source of errors.
As for weighting the significance of your records before returning them "randomly", you could order them on the sum or product of two components: a weighting and a random part. A very simple (perhaps overly simple) would be to weight the records between 1-5, and then add a random component between 1-5 (or 1-10, whatever... you'll need to decide the significance of each).
I can't comment on whether newid() is slow or not... have you got a citation for that (out of interest)?
--
Adam
Hey Adam,
I misread your original post, now I see how it was supposed to work, just posted below... got it working
... works great. hopefully it's not killing the CPU as this query will be use a LOT.. I'll just get a bigger CPU ;-)
With regards to the NEWID() performance issue, I don't have a specific link, I was just hunting around different forums etc and found a few posts that had talked about performance issues, and one that had a command I'd never seen that took a percentage of records with a lot of perfomance test graphs showing it was 10 times slow than the other approach.
I'm just going to have to see how it goes
Thanks for the help
Mark