2014-06-06 2 views
0

다음 쿼리는 별칭 'RANKING'에 "00904. 00000 - "%s: invalid identifier" 오류가 발생합니다. 이것이 작동하지 않는 이유를 알 수 없습니다. 'WHERE'절을 제거하면 올바른 결과가 생성됩니다.SQL throwing "invalid identifier"오류

SELECT RELEASE_NAME, 
ROW_NUMBER() OVER(ORDER BY START_DATE DESC) AS RANKING 
FROM(
    SELECT RELEASE_NAME, MIN(START_DATE) AS START_DATE FROM RM_TASK_STATUS_VIEW 
     WHERE RELEASE_NAME LIKE '%AU%' AND START_DATE IS NOT NULL 
     GROUP BY RELEASE_NAME 
     ORDER BY START_DATE 
) 
WHERE RANKING IN (3,4); 
+1

'SELECT'에서 별칭을 WHERE 조건으로 참조했습니다. 'WHERE' 조건에서 전체 표현식을 다시 사용하거나 다시 서브 쿼리해야합니다. 별칭 이름은'WHERE' 절에서 참조 할 수 없으므로'ORDER BY' 절에서만 참조 할 수 있습니다. –

+0

사실, where 절에서 row_number()를 사용할 수 없습니다. SQL 오류 : ORA-30483이 표시됩니다. –

답변

1

쿼리의 파생 테이블을 만들고 끝에 where 절을 넣습니다.

select * from 
(your query, minus the where clause, goes here) temp 
WHERE RANKING IN (3,4); 
+0

이것은 완벽하게 작동합니다, 감사합니다! @Stripthesoul 설명은 내가 왜 기억하는지 이해하는데 도움이 될 것이다. - 단지 구문을 고치는 것보다 근본적인 문제를 이해하는 것이 중요하다고 생각한다. – DanGordon