2014-10-31 51 views
-1

我有兩個表hrm_m_allowance,pay_m_allowance。查詢獲取基於另一個表的值的列值,即一個表值具有作爲另一個表中的字段名稱

hrm_m_allowance有場......像

INT_APPID  INT_BASIC A0001 A0002 A0003 A0004 A0005 
--------------------------------------------------------- 
14    7900  1200 700 2000 1000 500 

pay_m_allowance其領域...............

CHR_ACODE CHR_ANAME CHR_BONUS .......etc 
---------------------------------------------- 
A0001  HRA  0 
A0002  DA   0 
A0003  PF   0 
A0004  ESI  0 

現在我得值像

BASIC 7900 
HRA  1200  
DA  700 
PF  2000 
ESI  1000 

請幫我如何獲得價值像上面使用MySQL查詢

+0

是否有連接兩個表的字段? – fen1ksss 2014-10-31 09:58:57

+0

是的,實際上我必須加入另一張表hrm_m_offerletter。 hrm_m_offerletter,hrm_m_allowance具有公共字段INT_APPID。 – user3898783 2014-10-31 10:28:56

回答

0

時髦的數據庫設計。我建議首先unpivoting的數據,然後做join

這種方法
select coalesce(pb.chr_aname, col) as chr_aname, h.val 
from (select 'INT_BASIC' as col, INT_BASIC as val from hrm_m_allowance union all 
     select 'A0001' as col, A0001 as val from hrm_m_allowance union all 
     select 'A0002' as col, A0002 as val from hrm_m_allowance union all 
     select 'A0003' as col, A0003 as val from hrm_m_allowance union all 
     select 'A0004' as col, A0004 as val from hrm_m_allowance union all 
     select 'A0005' as col, A0005 as val from hrm_m_allowance 
    ) h left join 
    pay_m_allowance pb 
    on pb.chr_acode = h.col; 

警告:將最好的工作時,所有列具有相同的數據類型。

相關問題