一尘不染

选择sql中具有每个ID的最新日期的行重复多次

sql

3年前关闭。

我有一张桌子,每个ID重复3次。每行中每个ID前面都有一个日期。
我想为日期最近的每个ID选择整行。该表中共有370列,我希望在选择该行时选择所有列。

样本 -

ID   Name    Date        Marks    ..    ..  ..   
1     XY     4/3/2017     27
1     fv     4/3/2014     98
1     jk     4/3/2016     09
2     RF     4/12/2015    87
2     kk     4/3/2009     56
2     PP     4/3/2011     76
3     ee     4/3/2001     12
3     ppp    4/3/2003     09
3     lll    4/3/2011     23

答案应该是

ID   Name    Date        Marks    ..    ..  ..   
1     XY     4/3/2017     27      
2     RF     4/12/2015    87
3     lll    4/3/2011     23

我正在尝试如下-

select distinct ID,*,max(date) as maxdate from table

我也在Hive中尝试此操作。所以不确定是否某些sql函数在Hive中不起作用

谢谢


阅读 198

收藏
2021-03-17

共1个答案

一尘不染

使用公认的答案并使之适应您的问题,您将获得:

SELECT tt.*
FROM myTable tt
INNER JOIN
    (SELECT ID, MAX(Date) AS MaxDateTime
    FROM myTable
    GROUP BY ID) groupedtt 
ON tt.ID = groupedtt.ID 
AND tt.Date = groupedtt.MaxDateTime
2021-03-17