2016-11-12 92 views
1

我想將兩行中的不同列和不同行的值分組在同一列中想要放在不同列中的單行中。以下是我的表 enter image description here如何將「不同行中的列」放置在「單列中的不同列」

例如,我想在單個row.In無1個& 2行的單個行,會有ref_no(兩者相同行中),由(LEDGERNAME其VOUCHER_BY是博士),至(LEDGERNAME他的VOUCHER_BY是Cr),AMOUNT(兩行相同)或者像這樣 - enter image description here

我使用了oracle數據庫。我該如何做到這一點?

回答

2

簡單。自我加入:

select d.ref_no, 
    d.ledgername by, 
    c.ledgername to, 
    d.amount 
from my_ledger_table d 
inner join my_ledger_table c on d.ref_no = c.ref_no 
    and d.voucher_by = 'Dr' 
    and c.voucher_by = 'Cr' 
    and d.amount = c.amount; 
0

REF_NO,AMOUNT使用GROUP BY,使MINLEDGERNAMEMAX會給你BYTO

以下解決方案應該工作:

SELECT REF_NO,min(LEDGERNAME) as 'BY',MAX(LEDGERNAME) as 'TO',AMOUNT 
    FROM [yourtable] 
    GROUP BY REF_NO,AMOUNT 
+1

如果ledgername的順序相反?這是一個不正確的方法。 – GurV

0

我會更進一步,他由Kumar_Vikas解決方案。當voucher_by是Dr時,看起來海報想要「BY」列,當它是Cr時,它應該進入「TO」列。

SELECT REF_NO as ref_no 
     ,max(case when voucher_by='Dr' then LEDGERNAME end) as 'BY' 
     ,MAX(case when voucher_by='Cr' then LEDGERNAME end) as 'TO' 
     ,MAX(AMOUNT) as Amount 
    FROM [yourtable] 
GROUP BY REF_NO 
相關問題