如何在 SQL 中返回同一表中每个 ID 的最大日期列?

问题描述 投票:0回答:1

我有一个数据集,其中的 ID 具有每个策略的多个日期,但我需要添加一个自定义列,其中包含每个 ID 的最大日期。这样我就可以识别 ID 是否是新的,因为交易日期将是前一天。

我不想进行“groupby”,我希望将其添加到与另一列相同的表中。

例如:

策略 交易日期
策略#1 2023 年 11 月 2 日
策略#1 2023 年 11 月 3 日

将添加自定义列,如下所示:

策略 交易日期 最大交易日期
策略#1 2023 年 11 月 2 日 2023 年 11 月 3 日
策略#1 2023 年 11 月 3 日 2023 年 11 月 3 日
sql date max
1个回答
0
投票

您实际上可以

INNER JOIN
使用虚拟表进行最大日期计算。

create table STRATEGY (
  `Strategy` varchar(255),
  `Trade Date` date
 );
 
 INSERT INTO STRATEGY (STRATEGY, `Trade Date`) VALUES
 ('Strategy #1', '2023-11-2'),
 ('Strategy #1', '2023-11-1'),
 ('Strategy #2', '2023-11-4'),
 ('Strategy #2', '2023-11-3');
 
ALTER TABLE STRATEGY ADD COLUMN MaxDate date;

UPDATE STRATEGY A INNER JOIN (SELECT Strategy, MAX(`Trade Date`) as MaxDate from STRATEGY GROUP BY Strategy) B
ON A.Strategy = B.Strategy
SET A.MaxDate = B.MaxDate;

SELECT * FROM STRATEGY;

决赛桌:

策略 交易日期 最大日期
策略#1 2023-11-02 2023-11-02
策略#1 2023-11-01 2023-11-02
策略#2 2023-11-04 2023-11-04
策略#2 2023-11-03 2023-11-04
© www.soinside.com 2019 - 2024. All rights reserved.