2011-03-03 61 views
0

可能重复:
Oracle: Combine multiple results in a subquery into a single comma-separated value甲骨文视图分组元素

嗨,

这是我的问题...

我有一个表:

+------+------+------+ 
| CODE | NAME | TYPE | 
+------+------+------+ 
| 1 | AAA | x | 
+------+------+------+ 
| 2 | BBB | x | 
+------+------+------+ 
| 3 | CCC | y | 
+------+------+------+ 
| 4 | DDD | y | 
+------+------+------+ 

我要让Oracle中的视图....我想的结果是:

+---------+------+ 
| NAME | TYPE | 
+---------+------+ 
| AAA;BBB | x | 
+---------+------+ 
| CCC;DDD | y | 
+---------+------+ 

我可以分组AAA和BBB,因为他们有相同的类型,一种观点认为,在名称将为“ AAA; BBB“......将不同的名字分组;

任何人都可以帮助我吗?

问候,

托马索

+0

另请参阅:http://stackoverflow.com/questions/1120706/is-there-an-oracle-sql-query-that-aggregates-multiple-rows-into-one-row – 2011-03-03 17:21:09

回答

2

蒂姆·霍尔有一个页面,其中涵盖了甲骨文取决于Oracle版本提供的各种string aggregation techniques,哪些软件包安装在数据库中,你是否可以创建新的程序,支持这一点,或者你是否希望它在纯SQL中完成。

如果你使用11.2,最简单的办法是使用内置的LISTAGG分析功能可按

SELECT listagg(name, ';') within group (order by code), type 
    FROM your_table 
GROUP BY type 

如果您使用的是较早的版本,我更倾向于将使用自定义聚合函数(蒂姆的string_agg)。