Is there a way to split the results of a select query into two equal halfs?

Posted by Matthias on Stack Overflow See other posts from Stack Overflow or by Matthias
Published on 2010-05-05T19:01:32Z Indexed on 2010/05/05 19:08 UTC
Read the original article Hit count: 169

I'd like to have a query returning two ResultSets each of which holding exactly half of all records matching a certain criteria. I tried using TOP 50 PERCENT in conjunction with an Order By but if the number of records in the table is odd, one record will show up in both resultsets. Example:

I've got a simple table with TheID (PK) and TheValue fields (varchar(10)) and 5 records. Skip the where clause for now.

SELECT TOP 50 PERCENT * FROM TheTable ORDER BY TheID asc

results in the selected id's 1,2,3

SELECT TOP 50 PERCENT * FROM TheTable ORDER BY TheID desc

results in the selected id's 3,4,5

3 is a dup. In real life of course the queries are fairly complicated with a ton of where clauses and subqueries.

© Stack Overflow or respective owner

Related posts about sql

Related posts about sql-server