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)
请帮忙.谢谢!:)
只需使用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)