我有一个特殊的情况。我可以通过编写程序来实现,但我更愿意通过编写查询来完成它。对此查询的任何建议/答案都将非常有帮助。
所以,这是我的要求..
我有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。
是否可以通过编写任何复杂的查询?
答案 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