QA: Spann av rader i SQL 2005


Fråga: I en Oracle-databas så går det att göra följande för att hämta ut en visst spann av rader i ett resultatset:


SELECT name FROM MyTable
WHERE rownum BETWEEN 100 AND 200;


Kommer det att fungera i SQL Server 2005?


Svar: Ja, i princip kan man säga. I SQL Server 2005 blir syntaxen inte helt densamma. Det blir en tvåstegsraket, först får man skapa en CTE och därefter filtrera ut det spann med rader man vill ha. Se exempel nedan:


WITH tempCTE(rownum, name)AS(
SELECT
ROW_NUMBER() OVER(ORDER BY name) AS rownum,
name
FROM MyTable
)

SELECT
name
FROM tempCTE
WHERE rownum BETWEEN 100 AND 200


Skip to main content