Ранжирование функций по заданному числу в SQL Server 2008 - PullRequest
1 голос
/ 25 августа 2011
select 
    row_number() over (order by (select 1)) as Rank,
SalesAmount  
from
    dbo.FactInternetSales 

Это даст вам:

          Rank,      SalesAmount  
          1,         3578.27
          2,         3399.99 
          3,         3399.99
          4,         699.0982
          5,         799.0982

но я хочу получить вот так: перейти к номеру, который я передаю @skipnum (например, 10)

          Rank,       SalesAmount  
          11,         3578.27
          12,         3399.99 
          13,         3399.99
          14,         699.0982
          15,         799.0982

Есть ли в SQL Server 2008 что-либо подобное, используя функции ранжирования, а не курсоры?

Ответы [ 3 ]

2 голосов
/ 25 августа 2011
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) + @skipnum AS [Rank], ...

Однако, почему вы используете SELECT 1 для обозначения ранга? На самом деле ранжирование не должно быть значимым, например ORDER BY SalesAmount DESC? Также, если вы ожидаете, что они вернутся 11, 12, 13 ... вы должны добавить внешний ORDER BY ...

2 голосов
/ 25 августа 2011

Просто добавьте @skipnum к функции

select 
    row_number() over (order by (select 1)) + @skipnum as Rank,
    SalesAmount  
from
    dbo.FactInternetSales 

OVER (ORDER BY (SELECT 1)) означает произвольный порядок , поэтому я надеюсь, что это только для вопроса ...

1 голос
/ 25 августа 2011
select
    @skipnum + row_number() over (order by (select 1)) as Rank,
    SalesAmount  
from
    dbo.FactInternetSales
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...