반응형
[Oracle] ORA-22818: 하위 질의식이 여기에 허용되지 않습니다. 에러
ORA-22818: 하위 질의식이 여기에 허용되지 않습니다.
= ORA-22818 subquery expressions not allowed here
✔ 원인
서브쿼리로 나누기해서 계산하는 컬럼이 있다.
분모에 group by한 데이터를 count한 값이 들어가는데 카운트값이 0일때 문제가 발생할것같아서 DECODE문을 사용했는데 이때 발생했다
분모부분이 아래같은 형태로 되어있었다.
(SELECT DECODE(COUNT(*),0,null,COUNT(*)) FROM ~~)
ORA-22818 오류 코드를 찾아보니 서브쿼리에 지원되지않는 표현식을 사용해서 발생하는 문제같다.
✔ 해결
나같은 경우는 분모에 0이 들어갈까봐 저렇게 만들어본거라 DECODE를 제거하고 CASE WHEN으로 분모가 0인지 먼저 체크해서 해결할까하다가
생각해보니 GROUP BY한 데이터가 없으면 count할것도 없기때문에 0이 아니라 null로 나온다는걸 깨닫고 NVL을 사용해서 해결했다 (애초에 잘못넣은것..)
이 오류가 난다면 서브쿼리에 뭔가 맞지않는 표현식이 들어가있나 꼼꼼히 살펴봐야할 것 같다
반응형