2014-04-21 96 views
0

我合併兩行的原因是我所指的表存儲借記和貸記兩種交易。因此,無論何時發生交易,總會有兩個新記錄插入表中,一個用於借方,另一個用於信用。我需要做的是合併這兩個相關的交易,例如:在Oracle中合併兩行

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

你在這裏想要的是一個SQL JOIN查詢。

假設表名是 '反',是這樣的:

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加入表 '跨' 與本身。我們通過給該表提供一個別名('FROM trans table1'讓我們用'table1'來引用一個trans實例)。 'on'語句告訴Oracle從table1中獲取每條記錄,並將它加入到具有相同'TRANSACTION_ID'字段值的表2中的記錄中。

0

在您的情況下,您將擁有信用值或借記值的記錄。

考慮一個表名作爲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 ')AND(DR_TABLE.DR_AMOUNT <>'')

OutPut:As a Merged行根據TRANS_ID

enter image description here

+0

不完全是我正在尋找的答案。我在原始帖子中添加了一些內容,請再次查看 – JamesP