ORA-01785: ORDER BY 항목은 SELECT 목록 식의 수라야 합니다
ORDER BY 절에서 해당 오류가 발생 하였을 경우 ORDER BY 절에 함수(DECODE, NVL, TO_NUMBER, 사용자함수 등)를 사용하였는지 확인해 보아야 한다.
일반적으로 ORDER BY 절에 함수를 사용하는건 아무런 이상이 없지만 해당 쿼리문에 집합연산자 ( UNION, UNION ALL , MINUS, INTERSECT)가 사용이 되었다면 오류가 발생 한다.
집한연산자가 사용된 쿼리문의 ORDER BY 절에는 함수 사용을 하지 말아야하며 꼭 사용해야 한다면 해당 쿼리문을 인라인 뷰(INLINE VIEW)로 감싸서 ORDER BY를 하면 된다.
오류발생 : UNION ALL을 사용한 쿼리문에서 ORDER BY 절에 DECODE 함수 사용
오류발생 : UNION ALL을 사용한 쿼리문에서 ORDER BY 절에 TO_NUMBER 함수 사용
해결방법 : UNION ALL을 사용한 쿼리문을 인라인 뷰로 감싸서 ORDER BY를 하면 함수를 사용하여도 오류가 발생하지 않는다.
성능을 생각한다면 ORDER BY 절에 함수를 사용하지 않는 것이 옳을 것이다.