Можно ли добавить в новое поле в результирующей таблице? - PullRequest
2 голосов
/ 27 января 2009

У меня есть SQL-оператор в SQL Server 2005, который выглядит примерно так:

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

Что мне действительно очень нравится, так это чтобы полученная временная таблица имела дополнительное поле, которое по сути является целочисленным полем, считая от 1 до порядка, в котором предложение where возвращало записи.

Возможно ли это?

(По сути, я хочу иметь возможность возвращать подмножество записей, возвращаемых из первого оператора выбора, по строкам «строки с 45 по 179».)

1 Ответ

5 голосов
/ 27 января 2009

Попробуйте, используя 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 на то, что имеет смысл в вашем случае


Edit:

Если вы просто пытаетесь сделать пейджинг, есть много примеров этого:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...