1

如何得到以下结果?

输入 : -

  t1
 --------------
 col1 col2 col3
 --------------
 101, abc, 100
 101, xyz, 200
 101, rst, 300
 -------------

输出 : -

101 abc 100 xyz 200 rst 300
4

3 回答 3

4

请试试:

SELECT col1, replace(wm_concat(col2||col3),',', '')  FROM t1 GROUP BY col1;

或者

SELECT col1, (SELECT XMLAGG(xmlelement(X, X1.col2||col3)order by X1.col2).extract('//text()')
            FROM t1 X1 WHERE X1.col1=X.col1)
FROM t1 X
于 2013-03-12T07:14:01.933 回答
0

这适用于 11g 并保持项目的顺序。

select LISTAGG (code, ' ') WITHIN GROUP (ORDER BY rn, coln)
from(

    select code, min(rn) as rn, min(coln) as coln
    from(
       select col1 as code, rownum rn, 1 as coln from t order by col1, col3
       union all
       select col2 as code, rownum rn, 2 as coln from t order by col1, col3
       union all
       select col3 as code, rownum rn, 3 as coln from t order by col1, col3
       )
    group by code
   )
于 2013-03-12T07:18:45.020 回答
0

尝试

select col1 || ' ' || listagg( col2 || ' ' || col3, ' ' ) within group ( order by COL3 ) 
from t1
group by col1;
于 2013-03-12T07:33:49.853 回答