by 기린기린 [SQL Query] [2020.05.22 11:46:18]
WITH TEMP_CODE AS (SELECT 'G1' CDTP, '6' CD, '코드6' CDNM FROM DUAL UNION ALL SELECT 'G1' CDTP, '1' CD, '코드1' CDNM FROM DUAL UNION ALL SELECT 'G1' CDTP, '2' CD, '코드2' CDNM FROM DUAL UNION ALL SELECT 'G1' CDTP, '3' CD, '코드3' CDNM FROM DUAL UNION ALL SELECT 'G1' CDTP, '4' CD, '코드4' CDNM FROM DUAL UNION ALL SELECT 'G1' CDTP, '5' CD, '코드5' CDNM FROM DUAL) SELECT DISTINCT CD, CDNM FROM TEMP_CODE A WHERE A.CDTP = 'G1' ORDER BY DECODE(A.CDTP, 'G1', CD, NULL) DESC, CD
안녕하세요.
ORDER BY에 조건절을 두고 싶어 시도해보다가
개발서버(10g)에서는 잘되는 쿼리가 실서버(11g)에서는
ORA-01791에러가 나옵니다.
최종 조회되는 DISTINCT 컬럼 리스트에 없어서 에러가 나온다는 건 알겠는데
에러나는 CDTP 컬럼이 정렬되는 컬럼이 아닌 조건의 기준컬럼이라서 될 거라고 생각하고 시도했었습니다.
위 DUAL구문과 동일한 양식의 원쿼리(실테이블)가
10g에서 작동하고 11g에서 작동안하길래 버전차이인가 했더니
위 DUAL 구문으로 시도하면 두 버전 다 안됩니다.
또한 10g에서 작동하는 실쿼리에 DUAL구문에 해당하는 WHERE A.CDTP = 'G1' 절을 빼버리면 똑같이 동일에러 발생합니다.
어떻게 하면 작동하게 만들 수 있을까요?