如何添加排名列?

ang*_*gel 4 sql sql-server rank

我想选择记录并确定每个类似数据的排名.

我的数据如下.

MEMBER ID | LOAN AMOUNT 
1         | 2,000.00 
2         | 1,000.00 
3         | 4,000.00
4         | 1,000.00 
Run Code Online (Sandbox Code Playgroud)

我想要的结果如下所示.

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 
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

请帮忙.谢谢!:)

sag*_*agi 8

只需使用RANK():

SELECT RANK() OVER(ORDER BY t.loan_amount DESC) as [rank],
       t.memeber_id,t.loan_amount
FROM YourTable t
Run Code Online (Sandbox Code Playgroud)

虽然这会导致间隙EG

RANK | AMOUNT
 1        10
 2         9
 3         8
 3         8
 5         7
Run Code Online (Sandbox Code Playgroud)

为避免这种情况,对于SQL-Server 2008+,请使用 DENSE_RANK()

DENSE_RANK() OVER(ORDER BY t.loan_amount DESC) as [rank]
Run Code Online (Sandbox Code Playgroud)