2016-09-08 7 views
3

Я хотел бы выбрать записи и определить номер ранга для каждой подобной информации.Как добавить столбец ранга?

Мои данные следующие.

MEMBER ID | LOAN AMOUNT 
1   | 2,000.00 
2   | 1,000.00 
3   | 4,000.00 
4   | 1,000.00 

Результат, который я хотел, показан ниже.

RANK|MEMBER ID|LOAN AMOUNT 
1 |3  |4,000.00 
2 |1  |2,000.00 
3 |2  |1,000.00 
3 |4  |1,000.00 

RANK - это новый столбец. Я использую MS SQL Server 2008 и создал таблицу представлений, как показано ниже, но это не приводит к тому, что требуется.

select rank=count(*), s1.MemberID, s1.Loan_Amount 
    from (select MemberID, Loan_Amount from vwPrintTop20Borrowers) s1 
    group by s1.MemberID, s1.LOAN_AMOUNT 
    order by rank, s1.Loan_amount DESC 

Пожалуйста, помогите. Благодаря! :)

+0

Какая версия SQL-SERVER? – Arulkumar

+0

Является ли LOAN AMOUNT varchar? –

+0

Привет, Arulkumar, MS SQL Server 2008 .. – angel

ответ

0
SELECT ROW_NUMBER() 
     OVER (ORDER BY Loan_Amount DESC) AS Rank, 
    MemberID, LOAN_AMOUNT, 
FROM vwPrintTop20Borrowers 
+0

Не совсем: row_number создает неповторяющийся непрерывный набор. OP ищет набор с повторами. –

6

Просто используйте RANK():

SELECT RANK() OVER(ORDER BY t.loan_amount DESC) as [rank], 
     t.memeber_id,t.loan_amount 
FROM YourTable t 

Хотя это приведет к зазорами Е.Г.

RANK | AMOUNT 
1  10 
2   9 
3   8 
3   8 
5   7 

Чтобы избежать этого, для SQL-сервера 2008+, используйте DENSE_RANK()

DENSE_RANK() OVER(ORDER BY t.loan_amount DESC) as [rank] 
+0

Привет @sagi. Получил его с помощью DENSE_RANK(). Благодарю. – angel

1

Использование ниже запроса:

Select Dense_Rank() OVER(ORDER BY [LOAN AMOUNT] DESC) as [Rank],[MEMBER ID],[LOAN AMOUNT] 
from YourTable 
1
select * into #P from (
    select  1 as [MEMBER ID]  , 2000.00 as [LOAN AMOUNT] union all 
    select  2      , 1000.00 union all 
    select  3       , 4000.00 union all 
    select  4       , 1000.00 
)P 


select rank()over( order by [LOAN AMOUNT] desc) as srno,[MEMBER ID],[LOAN AMOUNT] from #P 

Выход:

 srno MEMBER ID LOAN AMOUNT 
      1   3  4000.00 
      2   1  2000.00 
      3   2  1000.00 
      3   4  1000.00 
+0

над должен быть desc – swe

+0

да, я отредактировал это, –

 Смежные вопросы

  • Нет связанных вопросов^_^