根据 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
我有一个 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