2

我在 SQL Server 2005 中有一条 SQL 语句,看起来像这样:

SELECT * INTO #TempTable FROM FirstTable WHERE <complex where clause>

我真正想要的是让生成的临时表有一个额外的字段,该字段本质上是一个从 1 向上计数的整数字段,按照 where 子句返回记录的顺序。

这可能吗?

(本质上,我希望能够返回从第一个 select 语句返回的记录的子集,沿着“第 45 到 179 行”的行。)

4

1 回答 1

5

试试这个,使用Row_Number

-- insert into temp table
SELECT *, 
  ROW_NUMBER() OVER (ORDER BY SortColumn) AS SortColumn INTO #TempTable 
FROM FirstTable 
WHERE <complex where clause>

-- check the results and drop the table
SELECT * FROM #TempTable WHERE SortColumn BETWEEN 45 AND 179 ORDER BY SortColumn
DROP TABLE  #TempTable

显然,您需要SortColumn用对您的情况有意义的内容进行替换


编辑:

如果你只是想进行分页,有很多这样的例子:

于 2009-01-27T19:32:50.470 回答