1
계약 날짜가 나열된 테이블이 있습니다. 계약에는 여러 날짜가있을 수 있으므로 가장 최근 날짜 만 원할 것입니다. 가장 최근 날짜가있는 행을 나열합니다.
은 내가 contractEnded 날짜에 의해 순위, 다음 나는 단지 1 순위를 얻을 수 있도록 필터링 시도,하지만 난 구문 오류가 계속 :잘못된 열 이름 'contractRank을'.
SELECT MAX(contractEnded) AS contractEnded, contractID, contractStarted, contractEnded, userID, examID,
ROW_NUMBER() OVER (
partition by userID
ORDER BY MAX(contractEnded) desc)
AS contractRank
FROM examcontract es
WHERE examID = 92855231134
and es.contractRank = 1
GROUP BY userID, examID, contractID, contractStarted, contractEnded
MSSQL 2012에서이 작업을 수행 할 수있는 방법이 있나요?
감사합니다.
WHERE, ON, GROUP BY 등의 select 절에서 별칭을 사용할 수 없습니다. CTE를 사용하십시오. 'WITH x AS (MAX를 선택하십시오.) SELECT * FROM x where where contractRank = 1;' –