在Oracle 10g中,将多行中的单列连接成单个列,用','分隔?

时间:2013-08-02 14:48:00

标签: oracle10g

我有表EMP,在RDBMS oracle 10g中,我想得到如下输出

EMPNO   ENAME      Concat_column

7369    SMITH      SMITH,ALLEN,WARD,JONES,MARTIN,BLAKE,CLARK,SCOTT,KING,TURNER,ADAMS,JAMES,FORD,MILLER
7499    ALLEN
7521    WARD
7566    JONES
7654    MARTIN
7698    BLAKE
7782    CLARK
7788    SCOTT
7839    KING
7844    TURNER
7876    ADAMS
7900    JAMES
7902    FORD
7934    MILLER

请帮帮我。

提前感谢您,对不起我的英文和打字错误。

2 个答案:

答案 0 :(得分:1)

尝试使用此查询,可能会有用:

SELECT rtrim (xmlagg (xmlelement (e, y.NAME || ',')).extract ('//text()'), ',') Concat_column
FROM EMP y 

您可以在此处尝试此操作( SQL Fiddle )。

第二个版本,也许这正是你想要的

SELECT a.EMPNO, a.NAME, b.Concat_column
FROM EMP a
LEFT JOIN (
  SELECT 
    7369 AS EMPNO, 
    'SMITH' AS NAME,
    rtrim (xmlagg (xmlelement (e, y.NAME || ',')).extract ('//text()'), ',') AS Concat_column
  FROM EMP y 
) b ON a.EMPNO = b.EMPNO

链接至 SQL Fiddle

答案 1 :(得分:0)

Tim Hall有一个页面列出了各种string aggregation techniques

我个人更喜欢用户定义的聚合函数,但也有许多其他技术也可以使用。