Cita:
Iniciado por Ghericoh Mmm, no tiene mucho sentido. Porque no mandas el ORDER BY inicial como ASC, me parece que te estas complicando, al final es lo mismo.
Pero en todo caso porque no pruebas creando una tabla temporal, osea un CREATE TABLE para ingresar tus 10 primeros datos, le aplicas un ORDER BY ASC, luego que los procesas ejecutas un DROP TABLE para eliminar la tabla.
Ojala te sirva
Si tiene sentido, imagina que ID almacena una secuencia indefinida de números (para el ejemplo, suponemos un momento X donde ID va del 1 al 10), y quieres obtener los 3 valores más altos, pero visualizarlos de forma ascendente.
La primera consulta, aunque devuelva correctamente los 3 valores más altos, no sirve porque los devuelve en forma descendente, es decir, 10, 9 y 8.
Código:
SELECT TOP 3 id FROM tabla ORDER BY id DESC
La segunda consulta devuelve los valores 1,2 y 3 que están en forma ascendente, pero no sirve porque no son los valores más altos.
Código:
SELECT TOP 3 id FROM tabla ORDER BY id
La tercera consulta devuelve los valores 8, 9 y 10 que están en forma ascendente y son los valores más altos, pero no sirve porque, al ser ID una secuencia de números indefinida, el resultado puede ser más o menos de 3 registros.
Código:
SELECT id FROM tabla WHERE id > 7 ORDER BY id
Las soluciones posteadas por Libras y leonardo_josue resuelven correctamente el caso, aunque por temas de rendimiento, es preferible la subconsulta a la tabla temporal.
Saludos