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는 응용프로그램 등에서 활용하면 편리한다.