我有值为
的表X Y Z
- --- -
1 abc P
1 def Q
我需要一个普通的查询(不是pl / sql),可以将结果显示为
X Y Z
- ------- ---
1 abc,def P,Q
即基于X列,值将转换为csv格式
可以有三列以上。
答案 0 :(得分:8)
您可以选择following techniques中的任何一个来汇总字符串
有时需要聚合来自多个行的数据 到一行,给出与特定相关的数据列表 值。以SCOTT.EMP表为例,我们可能想要 检索每个部门的员工列表。下面是一个列表 基本数据和我们想要从中返回的输出类型 聚合查询。
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;
答案 1 :(得分:0)
对于Postgre,您可以使用类似
的内容select X, array_to_string(array_accum(Y), ',') as Y, array_to_string(array_accum(Z), ',') as Z
from Table
group by X
它的array_to_string和array_accum是内置函数。