Bogdan,
Ai dreptate, query-ul meu era greşit.
Nu am la îndemână o bază de date din Compact Edition acum, dar să luăm următorul exemplu în AdventureWorks:
SELECT ContactID, FirstName, LastName
FROM Person.Contact WHERE LastName='Weber' ORDER BY FirstName
Query-ul de mai sus returnează 19 înregistrări. Query-ul meu:
SELECT * FROM (
SELECT TOP 8 * FROM (
SELECT TOP 24 ContactID, FirstName, LastName
FROM Person.Contact WHERE LastName='Weber' ORDER BY FirstName
) x ORDER BY FirstName DESC
) y ORDER BY FirstName
ar fi returnat ultimele 8 înregistrări (de la 12 la 19), în loc să returneze cele 3 înregistrări (de la 17 la 19) care ar fi trebuit să fie pe ultima pagină.
Un query corect ar putea fi:
SELECT TOP 8 ContactID, FirstName, LastName
FROM Person.Contact WHERE LastName='Weber'
AND ContactID NOT IN (
SELECT TOP 16 ContactID
FROM Person.Contact WHERE LastName='Weber' ORDER BY FirstName
) ORDER BY FirstName
Răzvan