오라클에서 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 참고하셔서 작성해보시면 될 것 같습니다.