상세 컨텐츠

본문 제목

ROW_NUMBER()

청강컴정/DataBase

by luckey 2009. 3. 16. 17:10

본문

ROW_NUMBER() 는 SQL2005에서 추가된 기능으로 정렬한 후에 일련번호를 매겨주는 기능을 한다.

ROW_NUMBER() OVER(ORDER BY 절)

* 반드시 ORDER BY 절이 들어 있어야 한다.
 1) over() 구문의 조건과 order by조건이 같은경우
- 가장 이상적인 구문으로써 over()안의 order by 구문과 일반 order by 의 구문이 같을경우가 가장 좋다.
 
select
    ROW_NUMBER() OVER (ORDER BY ZIP, BIRTH DESC) AS ROWNUM,
    SN, ID, BIRTH, ZIP
FROM
    MEMBER
WHERE
    YEAR(BIRTH) < 1990 AND SUBSTRING(ZIP,1,1) = '1'
ORDER BY ZIP, BIRTH DESC

2) over()구문과 order by 의 정렬순서가 다를 경우
해당 내용의 정렬은 일반 ORDER BY 문을 기준으로 정렬이 되고 글번호는 OVER를 기준으로 정렬된다.
고로 내용은 정상적으로 정렬이 되나 일련번호가 거꾸로 작성된다.

select
    ROW_NUMBER() OVER (ORDER BY ZIP DESC, BIRTH) AS ROWNUM,
    SN, ID, BIRTH, ZIP
FROM
    MEMBER
WHERE
    YEAR(BIRTH) < 1990 AND SUBSTRING(ZIP,1,1) = '1'
ORDER BY ZIP, BIRTH DESC

3) over()구문과 order by 구문이 완전히 다른 경우
- 쓰지말자!!! 어떻게 나올 것인지 알수가 없다.

관련글 더보기

댓글 영역