【发布时间】:2021-12-07 18:52:39
【问题描述】:
我有一张桌子:
DROP TABLE TBL_A;
CREATE TABLE TBL_A
(
number_id int,
country varchar(50),
status varchar(50),
number_of_days int,
datetime date
);
INSERT INTO TBL_A
VALUES (121144, 'USA', 'CLICKED',2, '2021-10-09'),
(121144, 'USA', 'CLAIMED',2, '2021-10-10'),
(121144, 'USA', 'BOUGHT',2, '2021-10-11'),
(121111, 'CAD', 'CLICKED',3, '2021-10-09'),
(121111, 'CAD', 'CLAIMED',3, '2021-10-10'),
(121111, 'CAD', 'BOUGHT',3, '2021-10-11'),
(121133, 'AUS', 'CLICKED',5, '2021-10-09'),
(121133, 'AUS', 'CLAIMED',5, '2021-10-10'),
(121133, 'AUS', 'BOUGHT',5, '2021-10-11');
我还有一张桌子:
DROP TABLE TBL_B;
CREATE TABLE TBL_B
(
number_id int,
country varchar(50),
status varchar(50),
number_of_days int,
datetime date
);
INSERT INTO TBL_B
VALUES (121144, 'USA', 'CLICKED',6, '2021-10-20'),
(121111, 'CAD', 'BOUGHT',10, '2021-10-21'),
(121133, 'AUS', 'CLAIMED',5, '2021-10-02');
我想从 TBL_A 中选择所有内容,但如果在 TBL_B 中找到相同的 number_id 和 status,我只想在 datetime 较高时选择 TBL_B 中的值。
有没有办法做到这一点?在上面的示例中,只有 USA&CLICKED 和 CAD&BOUGHT 应该“更新”,因为它们在第二个表中的值具有更大的日期时间,而其余记录应该来自第一个表。
这是我目前所拥有的,但无法完成它:
select
number_id,
country,
status,
number_of_days,
datetime date
from
TBL_A A
left join
(select
number_id,
country,
status,
number_of_days,
datetime date
from
TBL_B) on A.NUMBER_ID = B.NUMBER_ID
and a.STATUS = b.STATUS
【问题讨论】:
标签: sql snowflake-cloud-data-platform