SQL Select parte Inferior de Registros
-
09-06-2019 - |
Pregunta
Tengo una consulta donde me desea recuperar los más antiguos X registros.En la actualidad, mi consulta es algo como lo siguiente:
SELECT Id, Title, Comments, CreatedDate
FROM MyTable
WHERE CreatedDate > @OlderThanDate
ORDER BY CreatedDate DESC
Sé que normalmente me iba a quitar la 'DESC' palabra clave ' para cambiar el orden de los registros, sin embargo, en este ejemplo yo todavía quieren obtener los registros ordenados con el nuevo elemento de primera.
Así que quiero saber si hay cualquier medio de la realización de esta consulta que tengo, el más antiguo de los X elementos ordenados tales que el objeto más nuevo es el primero.También debo agregar que mi base de datos en SQL Server 2005.
Solución
¿Por qué no usar una subconsulta?
SELECT T1.*
FROM
(SELECT TOP X Id, Title, Comments, CreatedDate
FROM MyTable
WHERE CreatedDate > @OlderThanDate
ORDER BY CreatedDate) T1
ORDER BY CreatedDate DESC
Otros consejos
Incrustar la consulta.Se coge la parte de x cuando se ordenan en orden ascendente (es decir,la más antigua) y, a continuación, volver a clasificar aquellos en orden descendente ...
select *
from
(
SELECT top X Id, Title, Comments, CreatedDate
FROM MyTable
WHERE CreatedDate > @OlderThanDate
ORDER BY CreatedDate
) a
order by createddate desc