Necesito una solución para una consulta de selección en Sql Server 2005.¿Hay alguna manera de dividir los resultados de una consulta de selección en dos partes iguales?
Me gustaría tener una consulta que devuelva dos ResultSets cada uno de los cuales contiene exactamente la mitad de todos los registros que coinciden con un cierto criterio. Intenté usar TOP 50 PERCENT junto con un Order By pero si el número de registros en la tabla es impar, aparecerá un registro en ambos sets de resultados. No quiero tener ningún registro duplicado en los conjuntos de registros. Ejemplo:
Tengo una tabla simple con los campos TheID (PK) y TheValue (varchar (10)) y 5 registros. Omita la cláusula where por ahora.
SELECT TOP 50 PERCENT * FROM TheTable ORDER BY TheID asc
resultados en 1,2,3
SELECT TOP 50 PERCENT * FROM TheTable ORDER BY TheID desc
los resultados de la ID seleccionada en el 3,4,5
3 de ID seleccionado es un dup. En la vida real, por supuesto, las consultas son bastante complicadas con un montón de cláusulas where y subconsultas.
Asumo que esto es SQL Server? –
¿Quién está consumiendo estas dos consultas? Si ambos consumidores se conocen (presumiblemente por sus resultados), ¿por qué no buscar toda la lista y dividirla entre los consumidores para que no haya duplicados? –
sí. lo siento, olvidé mencionarlo. – Mats