我在SQL Server 2005中有一个SQL语句,如下所示:
SELECT * INTO #TempTable FROM FirstTable WHERE <complex where clause>
我真正喜欢的是让生成的临时表有一个额外的字段,该字段本质上是一个整数字段,按照where子句返回记录的顺序从1开始计算。
这可能吗?
(基本上,我希望能够返回从第一个选择语句返回的记录的子集,沿着“第45到179行”。)
答案 0 :(得分: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
替换为您案例中有意义的内容
修改强>
如果您只是尝试进行分页,那么有很多例子: