WHERE 절에서 ROW_NUMBER() 함수 사용 중 오류 발생
WHERE 절 내에서 ROW_NUMBER() 함수 사용에 관한 질문이 발생했습니다. 절. 한 사용자는 다음 쿼리를 시도하는 동안 "창 기능은 SELECT 또는 ORDER BY 절에만 나타날 수 있습니다."라는 오류가 발생했습니다.
SELECT employee_id FROM v_employee WHERE ROW_NUMBER() OVER (ORDER BY employee_id) > 0 ORDER BY employee_id
해결책: 창 기능이 포함된 래퍼 CTE
이 오류를 해결하기 위한 일반적인 기술은 윈도우 함수를 캡슐화하는 CTE(공용 테이블 표현식)를 만드는 것입니다. 계산. 원본 쿼리를 CTE로 래핑하면 후속 쿼리에서 윈도우 함수의 결과에 액세스하여 WHERE 절에서 활용할 수 있습니다.
이 솔루션을 구현하는 수정된 쿼리는 다음과 같습니다.
WITH MyCte AS ( select employee_id, RowNum = ROW_NUMBER() OVER (ORDER BY employee_id) from v_employee ORDER BY employee_id ) SELECT employee_id FROM MyCte WHERE RowNum > 0
이 방법을 사용하면 창 함수의 출력을 WHERE 절에서 사용할 수 있게 되어 사용자가 원하는 결과를 기준으로 결과를 성공적으로 필터링할 수 있습니다. 기준입니다.
위 내용은 WHERE 절에서 ROW_NUMBER()를 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!