我有一个数据集,其中一列是 Branch-ID,另一列是 Branch Manager,它在给定的 url 中如下所示。 数据集
我想根据分支 ID 将分支经理组合成一列。例如,如果 Bob 和 Sandra 是两个不同的分支经理,但具有相同的分支 id,即 branch-id=1,那么我们应该将它们连接在一起作为 Bob-Sandra,并将它们放在单独创建的列中。
我附上了上述数据集的预期输出。预期输出数据集
我目前正在使用Oracle Analytics Cloud 专业版。
我不了解 Oracle 分析,但是 - 如果它与 Oracle 数据库及其功能有关,那么会有所listagg
帮助。
第 1 - 10 行中的样本数据;您可能感兴趣的查询从第 11 行开始。
SQL> with test (account_id, branch_id, branch_manager) as
2 (select 1, 123, 'Sandra' from dual union all
3 select 3, 124, 'Martha' from dual union all
4 select 4, 125, 'John' from dual union all
5 select 6, 126, 'Andrew' from dual union all
6 select 7, 126, 'Mathew' from dual union all
7 select 2, 123, 'Michael' from dual union all
8 select 5, 125, 'David' from dual union all
9 select 8, 126, 'Mark' from dual
10 )
11 select a.account_id, a.branch_id, a.branch_manager,
12 b.concatenated_column
13 from test a join (select branch_id,
14 listagg(branch_manager, '-') within group (order by null) concatenated_column
15 from test
16 group by branch_id
17 ) b on b.branch_id = a.branch_id;
ACCOUNT_ID BRANCH_ID BRANCH_ CONCATENATED_COLUMN
---------- ---------- ------- -------------------------
1 123 Sandra Michael-Sandra
3 124 Martha Martha
4 125 John David-John
6 126 Andrew Andrew-Mark-Mathew
7 126 Mathew Andrew-Mark-Mathew
2 123 Michael Michael-Sandra
5 125 David David-John
8 126 Mark Andrew-Mark-Mathew
8 rows selected.
SQL>