데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
오라클에서 ROW_NUMBER()같은 기능을 구현하고 싶었습니다. 하지만 SQL에는 그런 기능이 없기에 SQL 쿼리를 이런 식으로 써서 쓸 수 있다는 걸 찾았습니다..
SELECT empno, ename, job, sal, rnum
FROM (
SELECT a.*,
(CASE @vjob WHEN a.job THEN @rownum:=@rownum+1 ELSE @rownum:=1 END) rnum,
(@vjob:=a.job) vjob
FROM emp a, (SELECT @vjob:='', @rownum:=0 FROM DUAL) b
ORDER BY a.job, a.sal
) c;
이거는 이제 Job이 같을때 계속 rownum를 증가시키는 거 잖아요..
하지만 만약 비교변수를 두 개로 하고 싶다면 예를 들어 Job과 sal이 같을때 rownum를 하나 증가시키고 싶다면 쿼리를 어떻게 짜야하는 지 궁금합니다.
제 머리는 응용이 안되나봐요 해봐도 안되고 여러분의 지식이 필요합니다.
Comment 1
-
withSQLServer
2018.05.15 11:55
SQL Server 2005부터 ROW_NUMBER 사용할 수 있습니다.
혹시 사용하시고 계신 SQL Server 가 2005 아래 버전이라면
간단하게 http://yangjetmul.tistory.com/220 참고하셔서 작성해보시면 될 것 같습니다.