我有3个表,一个是只包含日期的datetable,另外2个有如下数据。
日期表:
表1:
表2:
我用日期表做左连接,如下所示:
select * from
(select distinct t.d,
coalesce(tab1.name,tab2.name,"") as name,
coalesce(tab1.id,tab2.id,"") as id,
coalesce(tab1.tgt_cnt,0) as tgt_cnt,
coalesce(tab2.a_cnt,0) as a_cnt,
coalesce(tab2.b_cnt,0) as b_cnt,
coalesce(tab2.c_cnt,0) as v_cnt
from datetable t
LEFT JOIN (select * from table1) tab1 on t.d = tab1.dt
LEFT JOIN (select * from table2) tab2 on t.d = tab2.dt) a
where (tgt_cnt <> 0 or a_cnt <> 0 or b_cnt <> 0 or c_cnt <> 0);
我得到以下结果。
我的问题是汤姆的唱片怎么了。我不知道为什么cg和bob重复了两次。我的问题有点不对劲。
你能不能建议一下为什么汤姆唱片不在左边加入,为什么cg和bob在重复。
我期待以下结果。
非常感谢你的帮助。
谢谢,巴布
1条答案
按热度按时间x759pob21#
coalesce(tab1.name,tab2.name,"") as name
将用表1中的名称替换表2中的名称,因此tom从未出现,因为它被cg或bob替换。我猜你在这里想要达到什么目的。。。好像你想把表1和表2结合起来。我认为完全加入是合适的。
这将给