如何在 Oracle Analytics Cloud 专业版中实现具有相同 id 的列中条目的字符串连接?
How to achieve string concatentation of entries in column having same id in Oracle Analytics Cloud Professional Edition?
我有一个数据集,其中一列是 Branch-ID,另一列是 Branch Manager,它在给定的 url 中看起来如下所示。
dataset
我想根据 branch-id 将分支经理合并到一个列中。例如,如果 Bob 和 Sandra 是两个不同的分支经理,但具有相同的分支 ID,即 branch-id=1,那么我们应该将它们连接在一起作为 Bob-Sandra,并将它们放在单独创建的列中。
我附上了上述数据集的预期输出。 expected_output_dataset
我目前正在使用 Oracle Analytics Cloud 专业版。
我不了解 Oracle Analytics,但是 - 如果它与 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>
我有一个数据集,其中一列是 Branch-ID,另一列是 Branch Manager,它在给定的 url 中看起来如下所示。 dataset
我想根据 branch-id 将分支经理合并到一个列中。例如,如果 Bob 和 Sandra 是两个不同的分支经理,但具有相同的分支 ID,即 branch-id=1,那么我们应该将它们连接在一起作为 Bob-Sandra,并将它们放在单独创建的列中。
我附上了上述数据集的预期输出。 expected_output_dataset
我目前正在使用 Oracle Analytics Cloud 专业版。
我不了解 Oracle Analytics,但是 - 如果它与 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>