Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-包含最大日期值和其他字段的汇总列_Sql - Fatal编程技术网

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的日期不应该不同。对吗?我通过第二个示例实现了这一点。非常感谢你!!