Oracle视图分组元素

发布于 2024-10-20 06:40:24 字数 875 浏览 2 评论 0原文

可能的重复:
Oracle:合并多个结果将子查询转换为单个逗号分隔值

嗨,

这是我的问题...

我有一个表:

+------+------+------+ 
| 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”...因此将各种名称除以 ; 进行分组

有人可以帮助我吗?

问候,

托马索

Possible Duplicate:
Oracle: Combine multiple results in a subquery into a single comma-separated value

Hi there,

this is my problem...

I have a table:

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

I wanna make a view in ORACLE .... I wanna that the result is:

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

Can I grouping AAA and BBB because they have same TYPE in a VIEW that in a NAME will be "AAA;BBB" ... so grouping various names divided with ;

Can anyone help me?

Regards,

Tommaso

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

↙温凉少女 2024-10-27 06:40:24

Tim Hall 的一个页面涵盖了 Oracle 中可用的各种字符串聚合技术取决于 Oracle 版本、数据库中安装了哪些软件包,以及您是否可以创建新过程来支持这一点,或者是否希望在纯 SQL 中完成它。

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

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

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

Tim Hall has a page that covers the various string aggregation techniques available in Oracle depending on the Oracle version, what packages are installed in the database, and whether you can create new procedures to support this or whether you want it done in pure SQL.

If you are using 11.2, the simplest option would be to use the built-in LISTAGG analytic funciton

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

If you are using an earlier version, my preference would be to use the custom aggregate function (Tim's string_agg).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文