【问题标题】:Oracle view grouping elements [duplicate]Oracle视图分组元素[重复]
【发布时间】:2011-03-03 14:16:50
【问题描述】:

可能重复:
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”...所以将各种名称分组为 ;

谁能帮帮我?

问候,

托马索

【问题讨论】:

标签: sql oracle


【解决方案1】:

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)。

【讨论】:

    猜你喜欢
    • 2015-08-18
    • 2016-08-19
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2012-06-26
    • 2016-09-18
    相关资源
    最近更新 更多