2016-09-08 5 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

은 LOAR 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

Not quite : 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

안녕 @ 사기. 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

이상은 내림차순이어야 함 – swe

+0

예, 편집했습니다. –

관련 문제