我有合约表:
contractId date price partId 1 20120121 10 1 2 20110130 9 1 3 20130101 15 2 4 20110101 20 2
最大的合同是积极的合同(不要责怪我,我责怪创建xpps的信息)
我需要创建查询才能看到只有活动的合约(每份一份合约,最高日期合约).
所以查询的结果应该是这样的:
contractId date price partId 1 20120121 10 1 3 20130101 15 2
解决方法
这将在几乎所有的RDBM上工作,
SELECT a.* FROM tableName A INNER JOIN ( SELECT partID,MAX(date) maxDate FROM tableName GROUP BY partID ) B on a.partID = b.partID AND a.date = b.maxDate
SELECT contractId,date,price,partId FROM ( SELECT contractId,partId,ROW_NUMBER() OVER (PARTITION BY PartID ORDER BY date DESC) rn FROM tableName ) s WHERE rn = 1