如何将多行值合并到oracle中另一个表的一行中?

问题描述:

我知道我的问题标题不对,对不起。我真正想要做的是: 我有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

下面的查询应获取所需的详细信息。它的作用是 - 遍历所有的帐户,然后取不同的员工姓名为每名员工类型。你也可以用连接来完成它。

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'表不同的值或更少的数据 –

它的基本支点查询:

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