我想按两行分组,并且不同的两行同一列的值要放在一行中的不同列中。下面是我的表
例如,我不想要1&单行中的2行。在单行中,将有ref_no(两行中相同),(其中VOUCHER_BY为Dr的LEDGERNAME),(VOUCHER_BY为Cr的LEDGERNAME),AMOUNT(两行相同)或类似这个 -
我使用的是oracle数据库。我该怎么做?
答案 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
为您提供LEDGERNAME
和BY
。
以下解决方案应该有效:
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