我可以在 oracle 中这样做吗?我有一些这样的数据:
No | Data |
===========
1 | A |
1 | B |
1 | C |
1 | D |
是否有任何查询可以产生这样的结果,。?
No | Data |
=================
1 | A, B, C, D |
非常感谢 :D
我可以在 oracle 中这样做吗?我有一些这样的数据:
No | Data |
===========
1 | A |
1 | B |
1 | C |
1 | D |
是否有任何查询可以产生这样的结果,。?
No | Data |
=================
1 | A, B, C, D |
非常感谢 :D
也许此页面显示您正在寻找的内容。
Oracle 11g R2 模式设置:
CREATE TABLE TEST ( ID, DATA ) AS
SELECT 1, 'A' FROM DUAL
UNION ALL SELECT 1, 'B' FROM DUAL
UNION ALL SELECT 1, 'C' FROM DUAL
UNION ALL SELECT 1, 'D' FROM DUAL
UNION ALL SELECT 2, 'E' FROM DUAL
UNION ALL SELECT 2, 'F' FROM DUAL;
查询 1:
SELECT ID,
LISTAGG( DATA, ',' ) WITHIN GROUP ( ORDER BY DATA ) AS AGGREGATED_DATA
FROM TEST
GROUP BY ID
结果:
| ID | AGGREGATED_DATA |
|----|-----------------|
| 1 | A,B,C,D |
| 2 | E,F |
在 Oracle 中,我们可以使用wm_concat
函数。以下是上述示例的查询:
SELECT no, wm_concat(data) from table group by no
参考:wm_concat
select
no,
rtrim (xmlagg (xmlelement (d, data|| ',')).extract ('//text()'), ',') data
from
table_name
group by
no
;