gpt4 book ai didi

sql - 如何将表连接到自身并在 SQL 中选择最大值

转载 作者:行者123 更新时间:2023-12-04 01:44:53 24 4
gpt4 key购买 nike

我有一个 contracts table :

contractId    date       price     partId
1 20120121 10 1
2 20110130 9 1
3 20130101 15 2
4 20110101 20 2

最大的契约(Contract) date作为有效契约(Contract)(不要怪我,我怪 infor 创建了 xpps)

我需要创建查询以仅查看有效契约(Contract)(每个部分一份契约(Contract),日期最高的契约(Contract))。

所以查询的结果应该是这样的:
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 Function ,
    SELECT  contractId ,date, price,partId
    FROM
    (
    SELECT contractId ,date, price,partId,
    ROW_NUMBER() OVER (PARTITION BY PartID
    ORDER BY date DESC) rn
    FROM tableName
    ) s
    WHERE rn = 1
  • SQLFiddle Demo
  • 关于sql - 如何将表连接到自身并在 SQL 中选择最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13630855/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com