반응형
정렬 조건 없이 순번을 매겨보자
일반적으로 순번을 지정할 때 ROW_NUMBER(), RANK, DENSE_RANK 등을 이용한다.
[MSSQL] ROW_NUMBER, RANK, DENSE_RANK 순위함수
SELECT ROW_NUMBER() OVER(ORDER BY 컬럼명) FROM 테이블명
SELECT RANK() OVER(ORDER BY 컬럼명) FROM 테이블명
SELECT DENSE_RANK() OVER(ORDER BY 컬럼명) FROM 테이블명
이렇게 정렬할 기준 컬럼을 지정 후 순위를 매긴다.
하지만 SELECT 해서 나오는 결과 그대로 순위를 매기려고 한다.
SELECT ROW_NUMBER() OVER(ORDER BY 1)
FROM 테이블명
다음과 같이 ORDER BY 1로 하면 될 거 같은데...! 안된다..
그렇다면 어떻게 처리해야할까?
첫번째 방법. 의미없는 변수 사용
DECLARE @row INT = 1 -- 의미 없는 변수
SELECT ROW_NUMBER() OVER(ORDER BY @row)
FROM 테이블명
이렇게 의미없는 변수를 선언해주고 해당 변수를 ORDER BY 절에 넣어준다.
두번째 방법. SELECT 1 사용
SELECT ROW_NUMBER () OVER(ORDER BY (SELECT 1))
FROM 테이블명
반응형
'프로그래밍 > MSSQL' 카테고리의 다른 글
[MSSQL] @@ROWCOUNT 영향 받은 행 수 반환 (0) | 2017.02.15 |
---|---|
[MSSQL] GROUP BY 없이 컬럼과 함께 COUNT를 조회해보자 (COUNT OVER) (0) | 2017.02.14 |
[MSSQL] 특정 기간에 해당하는 모든 날짜 (MASTER..SPT_VALUES) (0) | 2017.02.13 |
[MSSQL] ORDER BY CASE (조건정렬) (0) | 2017.02.13 |
[MSSQL] 집합 연산자 UNION (합집합), INTERSECT (교집합), EXCEPT (차집합) (0) | 2017.02.13 |