使用的是oracle,左表a含有會計科目acct_cd,假如a的會計科目為'1001',那么連接b表獲取余額amt,即
select * from a
left join b
using(cust_no)
當a的會計科目為'1002',則連接c表獲取余額,即
select * from a
left join c
using(cust_no)
現在有方案一:
select 一些欄位, case acct_cd when '1001' then b.amt, when '1002' then c.amt
from a
left join b
using(cust_no)
left join c
using(cust_no)
方案二:
select 一些欄位,amt
from a
left join b
using(cust_no)
where a.acct_cd = '1001'
union all
select 一些欄位,amt
from a
left join c
using(cust_no)
where a.acct_cd = '1002'
請問哪種方案更好呢,在實際情況中,科目比較多,如果用方案二代碼會顯得很長,而方案一效率似憾訓低一點?還有沒有更好的方案?謝謝大佬們
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/60602.html
標籤:疑難問題
上一篇:mysql觸發器如何判斷兩次
