Próbowałem trochę zrozumieć, jak zaimplementować niestandardowe stronicowanie w SQL, na przykład czytając articles like this one.Wdrażaj funkcję stronicowania (przeskocz/odbierz) za pomocą tego zapytania.
Mam następujące zapytanie, które działa idealnie. Ale chciałbym zaimplementować stronicowanie z tym.
SELECT TOP x PostId FROM (SELECT PostId, MAX (Datemade) as LastDate
from dbForumEntry
group by PostId) SubQueryAlias
order by LastDate desc
co chodzi Chcę
Mam posty na forum, z powiązanych wpisów. Chcę otrzymywać posty z najnowszymi wpisami, dzięki czemu mogę wybrać ostatnio omawiane posty.
Teraz chcę mieć "10 do 20 ostatnio aktywnych wpisów" zamiast "10 najlepszych".
Co mają Próbowałem
starałem się realizować funkcje rzędu, jak ta w artykule, ale naprawdę bez powodzenia.
Jakieś pomysły, jak to zrobić?
Wielkie dzięki! To naprawdę dobra odpowiedź! Tylko pytanie dotyczące sql 2008. Chcę, aby ORDER BY wydarzyło się przed WHERE, ponieważ obecnie będzie sortować podzbiór, ale chcemy wybrać coś z całego zestawu ... Jakieś pomysły? :) Jeszcze raz dziękuję –
Jeśli dobrze Cię rozumiem, chcesz posortować według LastDate, prawda? wtedy możemy zmienić klauzulę OVER() w ten sposób: ROW_NUMBER() OVER (ORDER BY ** MAX (Datemade) desc **). * I usuń ostatnie ZAMÓWIENIE przez PostId *. Teraz CTE należy sortować "wcześniej" w razie potrzeby. poprawny? –
Dziękuję, pomogło, uwaga dotycząca próbki z 2012 roku, zamówienie jest obowiązkowe, próbowałem tego bez klauzuli order i otrzymałem komunikat "niepoprawna składnia" nie miał pojęcia, co było nie tak, dopóki nie przyjrzę się składni MSDN i dowiedziałem się, że zamówienie jest obowiązkowy. – Esen