我有两个如下表:
表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
我的表具有不同的字段,我的意思是它们都具有ACCOUNT
和datetime
,但是其中一个具有Doc1
,另一个具有Doc2
。
我们的要求是为每个account
阅读相关的Doc
(可以是Doc1
或Doc2
),其中datetime是最近的日期。
这将是结果:
> ACCOUNT datetime Doc
-----|------------|-------
| A | 04/10/2019 | 7832 (Table2)
| B | 05/11/2019 | 200 (Table1)
我无法实现。
我可以找到MAX(datetime)
,但看不到相关的Doc
(可以是Dcc1
或Doc2
)
有人可以帮我吗?
谢谢
罪
答案 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;