从2个不同的表中获取相同的数据并将其与DB2

时间:2017-11-04 05:27:05

标签: sql join db2

我有一个特殊的情况。我可以通过编写程序来实现,但我更愿意通过编写查询来完成它。对此查询的任何建议/答案都将非常有帮助。

所以,这是我的要求..

我有4张不同的牌桌。

表1:

plan_id  lob_cd col3 col4 col5..... 
1000     1010    c1   d1   e1
ABBB     1020    C2   D2   E2
ABAB     1020    C3   D3   E3

表2:

plan_id network_id  cl1 cl2 cl3.... 
1000        20       c1  d1  e1
ABAB        21       C2  D2  E2 

表3:

LOB_cd network_id  cc1  cc2 cc3.... 
1010      30        c1   d1  e1 
1020      40        c2   d2  e2 

表4:

netowrk_id  network_desc  coll1  coll2.... 
20            test desc1    xxx    yyyy
21            test desc2    yyy     xzzzz 
30            desc3         sffd   sfsf
40            desc4          sff    wewr
50            desc5        sfsf     sfsfsf

现在,我需要以下四个表中的详细信息。

结果数据:

Plan_id  LOB_cd netwrok_ID  network_desc  col3 col4 col5..... 
1000      1010  20           test desc1   c1    d1    e1 
ABBB      1020  21           test desc2   c2    d2    e2
ABAB      1020  40           desc4        c3    d3    e3

这就是重点..我首先需要使用plan_id从table2获取网络ID,如果它存在,那么我将使用它并将使用网络ID从表4获得网络描述。如果table2中没有plan id,那么我需要使用LOB cd检查table3以获取网络ID,然后连接table4以获取网络描述。

如果表2和表3中都存在记录,则只需选择table2网络ID。

是否可以通过编写任何复杂的查询?

1 个答案:

答案 0 :(得分:0)

我相信这是你正在寻找的:

select
    a.plan_id,
    a.lob_cd,
    coalesce(b.network_id, c.network_id) as network_id,
    d.network_desc,
    a.col3,
    a.col4,
    a.col5
from table1 a
left join table2 b
    on a.plan_id = b.plan_id
left join table3 c
    on a.lob_cd = c.lob_cd
left join table4 d
    on coalesce(b.network_id, c.network_id) = d.network_id