如何将表连接到其自身并在SQL中选择最大值
发布时间:2020-05-23 16:04:40 所属栏目:MsSql 来源:互联网
导读:我有合约表: contractId date price partId1 20120121 10 12 20110130 9 13 20130101 15 24 20110101 20 2 最大的
|
我有合约表: 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
> SQLFiddle Demo 如果您的RDBMS支持Window功能, 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
> SQLFiddle Demo (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
