Как получить текущий номер строки в запросе SQL Server 2000?

Вне всякого сравнения : различный инструмент всегда - необходимость.

5
задан davidg 22 August 2013 в 11:37
поделиться

5 ответов

Вы всегда можете попробовать использовать временную таблицу со столбцом идентификаторов

DECLARE @table TABLE(
        [id] INT IDENTITY(1,1),
        Val VARCHAR(10)
)

DECLARE @TableFrom TABLE(
        Val VARCHAR(10)
)
INSERT INTO @TableFrom (Val) SELECT 'A'
INSERT INTO @TableFrom (Val) SELECT 'B'
INSERT INTO @TableFrom (Val) SELECT 'C'
INSERT INTO @TableFrom (Val) SELECT 'D'

INSERT INTO @table (Val) SELECT * FROM @TableFrom ORDER BY Val DESC
SELECT * FROM @table

Некоторые из лучших подкачки страниц, которые я видел в Sql Server 2000, используют этот шаблон

DECLARE @PageStart INT,
        @PageEnd INT

SELECT  @PageStart = 51,
        @PageEnd = 100

SELECT  <TABLE>.*
FROM    (
            SELECT  TOP (@PageStart - 1)
                    <ID>
            FROM    (
                        SELECT  TOP (@PageEnd)
                                <ID>
                        FROM    TABLE
                        ORDER BY <ID> ASC
                    ) SUB
            ORDER BY SUB.<ID> DESC
        ) SUB INNER JOIN
        <TABLE> ON SUB.<ID> = <TABLE>.<ID>
ORDER BY SUB.<ID>
7
ответ дан 13 December 2019 в 05:37
поделиться

Другой способ создать временную таблицу с идентификатором для использования:

SELECT Field1, Field2, IDENTITY(int, 1,1) AS MyID 
INTO #Temp 
FROM Table1
3
ответ дан 13 December 2019 в 05:37
поделиться

Вы не можете использовать Row_Number () в Sql Server 2000 - он был представлен в 2005 году.

Если вы хотите использовать Row_Number для разбиения по страницам, вот несколько идей о том, как выполнить эффективное разбиение по страницам в Sql 2000:

1
ответ дан 13 December 2019 в 05:37
поделиться

Не могли бы вы уточнить, как следующий запрос решит проблему?

SELECT (SELECT SUM (1)

FROM specimen_source_ref

WHERE specimen_source_rcd <= reg.specimen_source_rcd

) AS 'Номер строки'

, *

FROM specimen_source_ref reg

0
ответ дан 13 December 2019 в 05:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: