怎么能在不同的行#34;列#34;放置"单行不同的列"

时间:2016-11-12 09:57:47

标签: sql oracle

我想按两行分组,并且不同的两行同一列的值要放在一行中的不同列中。下面是我的表 enter image description here

例如,我不想要1&单行中的2行。在单行中,将有ref_no(两行中相同),(其中VOUCHER_BY为Dr的LEDGERNAME),(VOUCHER_BY为Cr的LEDGERNAME),AMOUNT(两行相同)或类似这个 - enter image description here

我使用的是oracle数据库。我该怎么做?

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

GROUP BY上使用REF_NO,AMOUNT,以便MIN的{​​{1}}和MAX为您提供LEDGERNAMEBY

以下解决方案应该有效:

TO

答案 2 :(得分: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