Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
NewMedia42
Starting Member
35 Posts |
Posted - 2014-03-08 : 18:10:34
|
I have an interesting problem - right now I have a table which has a pool of things that need to be done. It's important that these things NOT be done in insert order, so right now I simple do an "ORDER BY newid()" so I get some random value. The problem with this is that we still need things done in a somewhat time sensitive way - meaning that the older something is, the more likely it would be to be selected. I can get around this manually in the application, by just getting the oldest item also, then using some weighted value for oldest vs random - but my question is, is there some alternative method I could use, other than ORDER BY newid(), that would still give random returns, but could also use a timedate column to give precedence to older item.Thanks for any insight anyone has! |
|
k_a_f_k_a
Starting Member
2 Posts |
Posted - 2014-03-09 : 07:59:58
|
Something like this perhaps?select *from mytableorder by datediff(d, mytimedatecolumn, getdate()) + abs(checksum(NEWID())) % 1000 desc You can in/decrease that number, depending on how much variance you want in your results. |
|
|
|
|
|