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 |  
                                    | NewMedia42Starting 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_aStarting 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 descYou can in/decrease that number, depending on how much variance you want in your results. |  
                                          |  |  |  
                                |  |  |  |