오라클에서 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를 하나 증가시키고 싶다면 쿼리를 어떻게 짜야하는 지 궁금합니다.

제 머리는 응용이 안되나봐요 해봐도 안되고 여러분의 지식이 필요합니다.