我要加入两个具有相同架构的数据集。一个表是另一个表的子集。我想保留第一个表中的所有记录,并在有联接的情况下从第二个表中获取几列。如果没有联接,则保留第一个表中的所有列。
这是我正在使用的查询
select
first.id,
first.date,
first.pdate,
CASE WHEN first.id = second.id then second.des else first.des end as des,
CASE WHEN first.id = second.id then second.flg else first.flg end as flg,
first.string1,
first.string2
from first left join second on first.id = second.id
first datset
1|2019-01-01|20191215|MARKET BASKET XXXXXXXX SWXXXEY NH|000|MARKET BASKET 00000646 SWANZEY NH|US
2|2019-01-01|20191215|MARKET NH|000|MARKET BASKET 00000646 SWANZEY NH|US
second dataset
1|2019-01-01|20191215|MARKET BASKET XXXXXXXX SWANZEY NH|000|MARKET BASKET 00000646 SWANZEY NH|US
expected output
1|2019-01-01|20191215|MARKET BASKET XXXXXXXX SWANZEY NH|000|MARKET BASKET 00000646 SWANZEY NH|US
2|2019-01-01|20191215|MARKET NH|000|MARKET BASKET 00000646 SWANZEY NH|US
但是这不起作用,因为我从有连接的第一个表中获取数据。
答案 0 :(得分:0)
尝试使用CASE WHEN
代替您的COALESCE
COALESCE(second.des,first.des) as des,
COALESCE(second.flg,first.flg) as flg,