[英]merging two rows in Oracle
我合并两行的原因是因为我要引用的表将事务存储在借方和贷方中。 因此,每当有交易发生时,表中总会插入两个新记录,一个记入借方,一个记入贷方。 我需要做的是合并这两个相关的事务,例如:
变成这样的东西:
忘了一件事。 如何确定借方和贷方金额由以下代码决定:
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,
金额仅来自一张桌子。
您想要的是一个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”字段值的记录。
在您的情况下,您将拥有一个贷方或借方值的记录。
将表名称视为带有示例记录的TRANS_INFO
查询:
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 <> '')
输出:作为基于TRANS_ID
的合并行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.