1
我有一個列出合同日期的表。合同可以有多個日期,所以我只想要最近的一個。列出具有最近日期的行
我試圖通過contractEnded日期排序,然後過濾,這樣我只得到了第一個排名,但我不斷收到一個語法錯誤:
無效的列名稱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(SELECT MAX ...)SELECT * FROM x WHERE contractRank = 1;' – 2014-09-25 18:52:56