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는 응용프로그램 등에서 활용하면 편리한다.
'SQL Server' 카테고리의 다른 글
테이블, 뷰, 프로시저, 함수 일괄삭제 (0) | 2018.01.04 |
---|---|
월의 첫날, 월의 말일, 년의 첫날, 년의 말일, 문자열 일(DD)이 없는 달은 말일구하기 (0) | 2017.12.05 |
sys.sysprocesses 시스템뷰 의 net_address(맥어드레스) 부정확함 (0) | 2017.03.18 |
저장 프로시저내 에러 디버깅용 테이블 및 ERROR_MESSAGE() 저장 (0) | 2017.03.08 |
엔터값 ( 캐리지리턴, 라인피드) 있는 자료만 찾기 (0) | 2017.02.11 |