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