2015-05-04 29 views
-1

我在表x中有列a,b,并且我想将这些列数据更改为行。 有可能在表格中有重复的值,但在列中对行进行更改只会有不同的值。列在oracle中更改行sql

E.G: 
a b 
1 2 
1 11 
3 4 
5 6 
7 8 
9 10 
......etc 

result 1 (query 1) should be 1-2,1-11,3-4,5-6,7-8,9-10.....

result 2 (query 2) should b 1,3,5,7,9....等(只有一个1一定要来,因为我们有一列重复数据)

我如何在Oracle SQL实现这一目标。

请帮忙。

+0

您正在寻找枢纽。看看这里:http://www.oracle-developer.net/display.php?id=506 – danish

+0

谢谢你的文档。但是我怎么能实现我在查询中提到的结果格式。 – user3195273

回答

0

对于Oracle 11,使用函数listagg()并在第一个查询连接列中,第二个 - 首先选择不同的值。

查询1:

select listagg(a||'-'||b, ',') within group (order by a, b) result from t 

RESULT 
------------------------------ 
1-2,1-11,3-4,5-6,7-8,9-10 

查询2:

select listagg(a, ',') within group (order by a) result 
    from (select distinct a from t) 

RESULT 
------------------------------ 
1,3,5,7,9 

对于老版本,你可以使用wmsys.wm_concat

+0

thanks.if我需要选择列c,d,以及结果如何可以修改qury.as当我尝试m面临错误。 – user3195273

+0

我需要查看您修改的查询和错误的详细信息,请提供此信息,否则我无法提供帮助。 –

+0

问题已解决。谢谢 – user3195273