根据 SQL 中的另一列获取最大日期

Get max date based on another column in SQL

我有一个 table 变量,它由列 id、日期和状态组成,如下所示

DECLARE @DateValues TABLE (
    id int identity(1,1), 
    dates datetime,
    status varchar (5)
)

下面是示例数据

INSERT INTO @DateValues values ('5/22/2021','')
INSERT INTO @DateValues values ('5/21/2021','ABC')
INSERT INTO @DateValues values ('5/22/2021','ABC')

还声明了一个变量,如下所示。

DECLARE @MaxID INT

从这个table我需要得到包含状态为'ABC'的日期最大值(MAX(dates))的行,从上面的样本值,我应该得到第 3 行作为结果,我需要将行 id 的相应 id 值分配给变量 (@MaxID)。

我尝试了以下查询但得到了多个结果集

SELECT id, MAX(dates), Footer
FROM @DateValues
WHERE STATUS = 'ABC'
GROUP BY id, STATUS

SELECT id, dates, status
FROM @DateValues
WHERE dates = (
    SELECT MAX(dates)
    FROM @DateValues
);

我需要这样的东西:

@MaxID = id
FROM @DateValues
WHERE dates = (
    SELECT MAX(dates)
    FROM @DateValues
    WHERE STATUS='ABC'
);

请帮忙。

这是你想要的吗?

SELECT *
FROM   (
           SELECT *, RN = ROW_NUMBER() OVER (ORDER BY dates DESC)
           FROM   @DateValues
           WHERE  status = 'ABC'           
       ) AS D
WHERE  D.RN = 1