SQL-包含最大日期值和其他字段的汇总列
我有一个包含以下字段的表:SQL-包含最大日期值和其他字段的汇总列,sql,Sql,我有一个包含以下字段的表: Id|Date|Name --------------- A|2019-04-24|"VALUE1" A|2019-04-23|"VALUE2" A|2019-06-11|"VALUE3" A|2019-06-12|"VALUE4" B|2019-05-21|"VALUE5" B|2019-05-22|"VALUE6" B|2019-03-13|"VALUE7" C|2019-01-03|"VALUE8" 我想得到一行每个Id有最长日期行的信息。这将是输出: Id|
Id|Date|Name
---------------
A|2019-04-24|"VALUE1"
A|2019-04-23|"VALUE2"
A|2019-06-11|"VALUE3"
A|2019-06-12|"VALUE4"
B|2019-05-21|"VALUE5"
B|2019-05-22|"VALUE6"
B|2019-03-13|"VALUE7"
C|2019-01-03|"VALUE8"
我想得到一行每个Id有最长日期行的信息。这将是输出:
Id|Date|Name
---------------
A|2019-06-12|"VALUE4"
B|2019-05-22|"VALUE6"
C|2019-01-03|"VALUE8"
我通过获取Id和最大日期(但不是与该日期关联的值)通过一个组实现了这一点
我现在正在做的是将该表内部联接,输入一个在日期和id上联接它,但我不能在两个字段上联接
是否有任何方法可以将GROUPBY子句中与max date相关的值字段带到结果中
否则,我如何在两个不同的字段上连接这两个表
有什么建议吗
非常感谢你 您可以使用相关子查询:
但是,大多数DBMS支持分析功能,因此您可以使用:
select t.*
from (select t.*, row_number() over (partition by t.id order by t.date desc) as seq
from table t
) t
where seq = 1;
您可以使用相关子查询:
但是,大多数DBMS支持分析功能,因此您可以使用:
select t.*
from (select t.*, row_number() over (partition by t.id order by t.date desc) as seq
from table t
) t
where seq = 1;
我没有得到第一个查询的结果。我得到了重复的ID和每一个不同的日期。我只需要得到一行id、最大日期和与该日期相关的值。这有意义吗?如果我们只从第二个查询中选择一个日期,那么每个id的日期不应该不同。对吗?我通过第二个示例实现了这一点。非常感谢你!!我没有得到第一个查询的结果。我得到了重复的ID和每一个不同的日期。我只需要得到一行id、最大日期和与该日期相关的值。这有意义吗?如果我们只从第二个查询中选择一个日期,那么每个id的日期不应该不同。对吗?我通过第二个示例实现了这一点。非常感谢你!!