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