根据最大日期从另一个表中选择

时间:2020-07-28 20:30:38

标签: sql sql-server

我正在尝试通过从另一张表中获取基于MAX Last更新的国家来进行简单的Select查询。

Order#         
1
2
3
4

另一个表包含国家和最近的更新:

Order#    Cntry           Last Update
1                    12/21/2019  9:19 PM
1          US        1/10/2020  1:07 AM
2          JP        7/29/2020  12:15 PM
3          CA        4/12/1992  2:04 PM
3          GB        11/6/2001  9:26 AM
3          DK        2/1/2005  3:04 AM
4          CN        8/20/2013  12:04 AM
4                    10/1/2015  4:04 PM

我想要的结果:

Order#     Country
1            US
2            JP
3            DK
4            

不确定此问题的正确解决方案。到目前为止,我一直坚持下去:

SELECT Main.[Order#], tempTable.Cntry
FROM Main 
LEFT JOIN (

SELECT [Order#], Cntry, Max([Last Update]) as LatestDate FROM Country
GROUP BY [Order#], Cntry

) as tempTable ON Main.[Order#] = tempTable.[Order#];

谢谢!

3 个答案:

答案 0 :(得分:1)

如果仅需要订单号和国家/地区,则可能不需要两个表:

SELECT distinct order, country
FROM
(
SELECT  order, LAST_VALUE (country) OVER (PARTITION by [order] order by last_update) country FROM Country
) X

答案 1 :(得分:0)

在SQL Server中,您可以使用相关的子查询:

update main
    set country = (select top (1) s.country
                   from secondtable s
                   where s.order# = main.order#
                   order by s.lastupdate desc
                  );

编辑:

一个选择看起来很相似:

select m.*,
       (select top (1) country
        from secondtable s
        where s.order# = main.order#
        order by s.lastupdate desc
       )
from main m

答案 2 :(得分:0)

我没有时间尝试使用示例数据,但这就是您要寻找的东西吗?

select order orde, cntry
from table
where last_update = 
(select max(last_update) from table where order = orde)