Nie musisz mieć podzapytania:
select RowNumber,
Id,
CreatedOn,
Name,
Description,
Address,
UserName,
Pet,
FileName,
Type,
TypeName
from #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
order by CreatedOn desc
Na komentarz za długie... ;)
Fizyczne (w blokach/stronach) wiersze zapisywane są w kolejności wstawiania (w dużym uproszczeniu).Silnik bazodanowy numeruje wiersze w kolejności odczytu ich ze stron/bloków (znowu w uproszczeniu). Usuwanie powoduje "dziury" w blokach/stronach, które mogą być wypełniane np. nowymi wierszami, albo miejsce odzyskiwane przez operacje typu "defragmentacja" (np. oraclowe table shrink space + compact).
W bloku/stronie możesz mieć układ danych:
Rownum=1 : created_on=2007
Rownym=2 : created_on=2008
Rownum=3 : created_on=2002
Jak weźmiesz Rownum 1..2, i posortujesz po dacie to otrzymasz daty 2007,2008.
Jak weźmiesz posortujesz po dacie i weźmiesz rownum 1..2 to otrzymasz 2002,2007.
Czyli różne wyniki.