Question

J'ai une requête dans laquelle je souhaite récupérer les enregistrements X les plus anciens.À l'heure actuelle, ma requête ressemble à ce qui suit :

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

Je sais que normalement je supprimerais le mot-clé « DESC » pour changer l'ordre des enregistrements, mais dans ce cas, je souhaite toujours que les enregistrements soient classés avec l'élément le plus récent en premier.

Je veux donc savoir s'il existe un moyen d'effectuer cette requête de telle sorte que les éléments X les plus anciens soient triés de telle sorte que l'élément le plus récent soit le premier.Je dois également ajouter que ma base de données existe sur SQL Server 2005.

Était-ce utile?

La solution

Pourquoi ne pas simplement utiliser une sous-requête ?

SELECT T1.* 
FROM
(SELECT TOP X Id, Title, Comments, CreatedDate
FROM MyTable
WHERE CreatedDate > @OlderThanDate
ORDER BY CreatedDate) T1
ORDER BY CreatedDate DESC

Autres conseils

Intégrez la requête.Vous prenez le premier x lorsqu'il est trié par ordre croissant (c'est-à-direles plus anciens) puis re-trier ceux-ci par ordre décroissant...

select * 
from 
(
    SELECT top X Id, Title, Comments, CreatedDate
    FROM MyTable
    WHERE CreatedDate > @OlderThanDate
    ORDER BY CreatedDate 
) a
order by createddate desc 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top