SQL-根据条件从不同的表中选择不同的字段

时间:2019-12-12 13:35:26

标签: mysql sql

我有两个如下表:

表1:

>  ACCOUNT    datetime     Doc1   
        -----|------------|-------
       | A   | 04/01/2019 | 399 
       | A   | 23/03/2019 | 244
       | A   | 04/03/2009 | 555
       | B   | 08/11/2009 | 300
       | B   | 05/11/2019 | 200

表2:

  >  ACCOUNT  datetime     Doc2   
        -----|------------|-------
       | A   | 04/10/2019 | 7832 
       | A   | 23/07/2018 | 6325
       | B   | 08/10/2019 | 3877
       | B   | 03/02/2010 | 3267

我的表具有不同的字段,我的意思是它们都具有ACCOUNTdatetime,但是其中一个具有Doc1,另一个具有Doc2

我们的要求是为每个account阅读相关的Doc(可以是Doc1Doc2),其中datetime是最近的日期。

这将是结果:

>     ACCOUNT datetime     Doc   
        -----|------------|-------
       | A   | 04/10/2019 | 7832  (Table2)
       | B   | 05/11/2019 | 200   (Table1)

我无法实现。 我可以找到MAX(datetime),但看不到相关的Doc(可以是Dcc1Doc2

有人可以帮我吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用窗口功能和union all

select t12.*
from (select t12.*,
             row_number() over (partition by account order by datetime desc) as seqnum
      from ((select account, datetime, doc1
             from table1
            ) union all
            (select account, datetime, doc2
             from table2
            )
           ) t12
      ) t12
where seqnum = 1;