Oracle视图分组元素

时间:2011-03-03 14:16:50

标签: sql oracle

  

可能重复:
  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进行分组,因为它们在VIEW中具有相同的TYPE,在NAME中将是“AAA; BBB”...因此将各种名称分组;

任何人都可以帮助我吗?

此致

托马索

1 个答案:

答案 0 :(得分:2)

Tim Hall有一个页面,其中包含Oracle中可用的各种string aggregation techniques,具体取决于Oracle版本,数据库中安装了哪些软件包,以及是否可以创建新程序来支持此操作或是否要完成在纯SQL中。

如果您使用的是11.2,最简单的选择是使用内置的LISTAGG分析函数

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

如果您使用的是早期版本,我的偏好是使用自定义聚合函数(Tim的string_agg)。