2017-07-17 89 views
0

我知道我的問題標題不對,對不起。我真正想要做的是: 我有2個表即賬戶表和歷史表如下 - 帳戶表如何將多行值合併到oracle中另一個表的一行中?

BranchID | AccountNo 
101  | 123456 
102  | 123456 
102  | 123457 

歷史表

BranchID | AccountNo EmployeeName | EmployeeType 
101  | 123456 | Mr. ABC  | PMO 
101  | 123456 | Mr. TRY  | RO 
101  | 123456 | Mr. OPR  | Ref 
102  | 123456 | Mr. WER  | PMO 
102  | 123456 | Mr. CVB  | Ref 
102  | 123457 | Mr. QSR  | PMO 
102  | 123457 | Mr. LIT  | RO 
102  | 123457 | Mr. GHK  | Ref 

我想原樣

綜合作用的結果
BranchID | AccountNo | PMOName | ROName | RefName 
101  | 123456 | Mr. ABC | Mr. TRY | Mr. OPR 
102  | 123456 | Mr. WER |   | Mr. CVB 
102  | 123457 | Mr. QSR | Mr. LIT | Mr. GHK 

我怎樣才能做到這一點?

+0

查詢什麼都試了試至今寫? –

+0

您正在尋找'LISTAGG()' –

+0

使用內部聯接兩個表帳戶Table.BranchID =歷史Table.BranchID並選擇列包含BranchID | AccountNo | PMOName | ROName |順便提一下,RefName 是sql的概念。 – LogicalDesk

回答

0

下面的查詢應獲取所需的詳細信息。它的作用是 - 遍歷所有的帳戶,然後取不同的員工姓名爲每名員工類型。你也可以用連接來完成它。

SELECT account.branchid BranchID, 
    account.accountno AccountNo, 
    (SELECT employeename 
    FROM history 
    WHERE account.branch_id = history.branch_id 
    AND account.accountno = history.accountno 
    AND history.employeetype = 'PMO' 
    ) PMOName, 
    (SELECT employeename 
    FROM history 
    WHERE account.branch_id = history.branch_id 
    AND account.accountno = history.accountno 
    AND history.employeetype = 'RO' 
    ) ROName, 
    (SELECT employeename 
    FROM history 
    WHERE account.branch_id = history.branch_id 
    AND account.accountno = history.accountno 
    AND history.employeetype = 'Ref' 
    ) RefName 
FROM account 
; 
+0

不工作的每一個帳戶號碼,最大正在返回空行。 –

+0

@KayserAhmed則可能是在你的'employeetype'場'history'表不同的值或更少的數據 –

0

它的基本支點查詢:

select * 
    from account join history using (branchid, accountno) 
    pivot (max(employeename) for employeetype in ('PMO' pmo, 'RO' ro, 'Ref' ref)) 
    order by branchid, accountno 

BRANCHID ACCOUNTNO PMO  RO   REF 
-------- --------- ---------- ---------- ---------- 
    101 123456 Mr. ABC Mr. TRY Mr. OPR 
    102 123456 Mr. WER    Mr. CVB 
    102 123457 Mr. QSR Mr. LIT Mr. GHK 
相關問題