SQL Server

ORDER BY 없이 현재 보이는 순서대로 ROW_NUMBER() 구하기

미스터몽키 2017. 11. 30. 13:11


ROW_NUMBER() 함수는 반드시 OVER(ORDER BY ...)  형식이 있어야한다.


그런데 ORDER BY 없이 현재 보이는 순서대로 레코드번호를 찍고 싶을 때가 있다.



방법1)  변수 활용


1
2
3
4
DECLARE @one int = 1;
 
SELECT ROW_NUMBER() OVER(ORDER BY @one) [SNO], *
FROM TABLE1
cs



방법2) 카테시안 곱 활용


먼저  컬럼명 "ONE" 라는 int 형 컬럼 한 개만 있는 AROW_ONE 테이블을 만들어 숫자 1을 입력한다.


1
2
3
4
5
SELECT * FROM AROW_ONE
 
 
 
 
cs



그리고 다음의 쿼리를 실행하면 된다.


1
2
3
4
5
SELECT ROW_NUMBER() OVER(ORDER BY B.ONE) [SNO], *
FROM TABLE1 A, AROW_ONE B
 
 
 
cs


방법1은 간단하게 SQL문으로 자료를 제어할 때 사용하면 되고

방법2는 응용프로그램 등에서 활용하면 편리한다.