在Oracle中合并两行

时间:2014-04-21 03:33:13

标签: sql oracle merge toad

我合并两行的原因是因为表I指的是在借方和贷方中存储交易。因此,每当交易发生时,表中总会有两个新记录,一个用于借方,一个用于贷方。我需要做的是合并这两个相关的交易,例如:

merging two related rows

看起来像这样:

sample of merged row

忘了一件事。如何确定借方和贷方金额是由以下代码:

CASE WHEN DTD.PART_TRAN_TYPE = 'D'
        THEN (DTD.TRAN_AMT)
        ELSE null
    END DR_Amount,
    CASE WHEN DTD.PART_TRAN_TYPE = 'C'
        THEN (DTD.TRAN_AMT)
        ELSE null
    END CR_Amount,

金额来自一张桌子。

2 个答案:

答案 0 :(得分:2)

这里你想要的是一个SQL JOIN查询。

假设表名是' trans',类似于:

SELECT table1.TRANSACTION_ID, table1.ACCT_CURRENCY, 
    table1.DR_AMOUNT, table2.CR_AMOUNT
FROM trans table1
INNER JOIN trans table2 on table1.TRANSACTION_ID = table2.TRANSACTION_ID

这使用 INNER JOIN 加入表格' trans'与自己。我们通过为表格提供别名(' FROM trans table1'让我们引用带有' table1'的trans的实例)来实现此目的。 ' on'声明告诉Oracle从table1获取每条记录并将其加入table2中具有相同' TRANSACTION_ID'的记录。场价值。

答案 1 :(得分:-1)

在您的情况下,您将拥有一个包含信用值或借方值的记录。

将表名称视为具有样本记录的TRANS_INFO

enter image description here

查询:

SELECT * FROM TRANS_INFO CR_TABLE 
INNER JOIN TRANS_INFO DR_TABLE ON CR_TABLE.TRANS_ID = DR_TABLE.TRANS_ID
AND (CR_TABLE.CR_AMOUNT <> '') AND (DR_TABLE.DR_AMOUNT <> '')

OutPut:作为基于TRANS_ID的合并行

enter image description here