【问题标题】:merging two rows in Oracle在Oracle中合并两行
【发布时间】:2014-04-21 03:33:13
【问题描述】:

我合并两行的原因是因为我所指的表在借方和贷方中都存储了交易。因此,无论何时发生交易,都会有两条新记录插入到表中,一条用于借方,一条用于贷方。我需要做的是合并这两个相关的事务,例如:

变成这样的东西:

忘了一件事。借记卡和贷记卡的金额是由以下代码确定的:

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 oracle merge toad


    【解决方案1】:

    您需要的是一个 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' 字段值的记录。

    【讨论】:

      【解决方案2】:

      在您的情况下,您将有一个贷记值或借记值的记录。

      将表名视为带有示例记录的 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 <> '')
      

      OutPut:作为基于TRANS_ID的合并行

      【讨论】:

      • 不完全是我正在寻找的答案。我在原帖中添加了一些内容,请再次查看
      猜你喜欢
      • 2022-10-01
      • 2021-05-16
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多