2008-09-13 18 views
10

Tengo una consulta en la que deseo recuperar los registros X más antiguos. En la actualidad, mi consulta es algo como lo siguiente:SQL Select Bottom Records

SELECT Id, Title, Comments, CreatedDate 
FROM MyTable 
WHERE CreatedDate > @OlderThanDate 
ORDER BY CreatedDate DESC 

Sé que normalmente me quite la palabra clave del 'DESC' para cambiar el orden de los registros, sin embargo en este caso todavía quiero obtener los registros ordenados con el el artículo más nuevo primero.

Así que quiero saber si hay algún medio para realizar esta consulta de modo que obtenga los elementos X más antiguos ordenados de modo que el elemento más nuevo sea el primero. También debería agregar que mi base de datos existe en SQL Server 2005.

Respuesta

22

¿Por qué no utilizar 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 
+0

Entonces comienza un viaje épico ... – Jaydles

1

Insertar la consulta. Tome la parte superior x cuando esté ordenada en orden ascendente (es decir, la más antigua) y luego vuelva a clasificarlos 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