해당 데이타는 아래와 같습니다.
AA | BB | CC | DD |
가나다 | 1 | 2012-01-01 | 11 |
가나다 | 1 | 2012-01-02 | 11 |
가나다 | 3 | 2012-01-02 | 11 |
마바사 | 1 | 2012-01-02 | 33 |
아자차 | 2 | 2012-01-03 | 44 |
카타파 | 4 | 2012-01-03 | 22 |
아자차 | 3 | 2012-01-04 | 55 |
원하는 데이타는 아래와 같습니다.
랭킹 | AA | BB | CC | DD |
1 | 가나다 | 1 | 2012-01-02 | 11 |
1 | 마바사 | 1 | 2012-01-02 | 33 |
2 | 아자차 | 2 | 2012-01-03 | 44 |
3 | 카타파 | 4 | 2012-01-03 | 22 |
아래와 같이 랭킹을 잡은 후 다시 CC,DD값을 얻기위해 조인을 하면 "가나다"가 중복으로 나와서요.
SELECT a.Ranking,a.AA,a.BB FROM
(SELECT (
SELECT COUNT(AA) FROM (SELECT AA,min(BB) as BB FROM 테이블 group by AA ) T2
WHERE T1.BB > T2.BB) +1 Ranking,AA,BB FROM
(SELECT AA,min(BB) as BB FROM 테이블 group by AA ) T1 )
AS a ORDER BY Ranking
도움 요청합니다.
감사합니다.
Comment 2
-
Hisory
2014.10.17 11:30
declare @tb table(aa varchar(10),bb varchar(10),cc varchar(10),dd varchar(10))insert @tbvalues ('가나다','1','2012-01-01','11'),('가나다','1','2012-01-02','11'),('가나다','3','2012-01-02','11'),('마바사','1','2012-01-02','33'),('아자차','2','2012-01-03','44'),('카타파','4','2012-01-03','22'),('아자차','3','2012-01-04','55') ;with TB_CTE As (select aa , bb , cc , dd , ROW_NUMBER() over(partition by aa order by bb) AS Rnkfrom @tb)select aa , bb ,cc ,dd , Rnkfrom TB_CTEWhere Rnk = 1 -
김미영_279087
2014.10.17 13:06
감사합니다. 응용해서 잘해결했습니다~