데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
해당 데이타는 아래와 같습니다.
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
감사합니다. 응용해서 잘해결했습니다~