我在 SQL Server 2005 中有一条 SQL 语句,看起来像这样:
SELECT * INTO #TempTable FROM FirstTable WHERE <complex where clause>
我真正想要的是让生成的临时表有一个额外的字段,该字段本质上是一个从 1 向上计数的整数字段,按照 where 子句返回记录的顺序。
这可能吗?
(本质上,我希望能够返回从第一个 select 语句返回的记录的子集,沿着“第 45 到 179 行”的行。)
我在 SQL Server 2005 中有一条 SQL 语句,看起来像这样:
SELECT * INTO #TempTable FROM FirstTable WHERE <complex where clause>
我真正想要的是让生成的临时表有一个额外的字段,该字段本质上是一个从 1 向上计数的整数字段,按照 where 子句返回记录的顺序。
这可能吗?
(本质上,我希望能够返回从第一个 select 语句返回的记录的子集,沿着“第 45 到 179 行”的行。)
试试这个,使用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
用对您的情况有意义的内容进行替换
编辑:
如果你只是想进行分页,有很多这样的例子: