오라클에서 이런 쿼리문을 사용하고 있는데요..
select * from (select * from table_name order by investid )
where investid > 628 and rownum < 3 and d_sts in ('+', '=') AND GRADE <= '0' order by investid desc;
DB2로 DB가 바뀝니다. 그래서 DB2용으로 바꿔야 하는데
select * from (select * from table_name order by investid) a
where investid > 628 and d_sts in ('+', '=') AND GRADE <= '0' order by investid desc fetch first 2 rows only;
이렇게 바꿨더니 전혀 다른 결과가 나옵니다.
이유는 order by의 위치가 문제인데요..
오라클의 쿼리문은 이미 rownum이 먹은 상태에서 order by 가 들어간거구요, DB2의 쿼리문에서는 fetch first 2 rows only 문장 뒤에는 order by 가 들어가지 못해서 앞에다가 써줬더니 전체 결과가 달라진 겁니다.
제발 좀 같은 결과가 나올 수 있도록 도와주세요. ㅠㅠ
|