C D*_*pak 1 sql oracle string-aggregation
我有值的表
X Y Z
- --- -
1 abc P
1 def Q
Run Code Online (Sandbox Code Playgroud)
我需要一个普通的查询(不是pl/sql),它可以给出结果
X Y Z
- ------- ---
1 abc,def P,Q
Run Code Online (Sandbox Code Playgroud)
即,基于列X,值被转换为csv格式
可以有三列以上.
有时,有必要将来自多个行的数据聚合到一行中,从而给出与特定值相关联的数据列表.以SCOTT.EMP表为例,我们可能希望检索每个部门的员工列表.下面是我们想要从聚合查询返回的基础数据和输出类型的列表.
Run Code Online (Sandbox Code Playgroud)Base Data: DEPTNO ENAME ---------- ---------- 20 SMITH 30 ALLEN 30 WARD 20 JONES 30 MARTIN 30 BLAKE 10 CLARK 20 SCOTT 10 KING 30 TURNER 20 ADAMS 30 JAMES 20 FORD 10 MILLER Desired Output: DEPTNO EMPLOYEES ---------- -------------------------------------------------- 10 CLARK,KING,MILLER 20 SMITH,FORD,ADAMS,SCOTT,JONES 30 ALLEN,BLAKE,MARTIN,TURNER,JAMES,WARD
就个人而言,我发现这种语法非常易读
SELECT x, wm_concat(y), wm_concat(z)
FROM xyz
GROUP BY x;
Run Code Online (Sandbox Code Playgroud)