温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

在Oracle中的多个连接表上怎么使用LISTAGG()

发布时间:2022-02-28 16:36:50 来源:亿速云 阅读:222 作者:iii 栏目:开发技术

这篇文章主要讲解了“在Oracle中的多个连接表上怎么使用LISTAGG()”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在Oracle中的多个连接表上怎么使用LISTAGG()”吧!

你可能知道如何在单个表上使用 LISTAGG(),但不知道如何在多个连接表上使用 LISTAGG。此示例演示如何在 Oracle 12g 中对连接的多个表使用聚合函数。

假设我们有以下两个表。

“用户”表

ID姓名
111aaa
222bbb
333bbb

“记录”表

ID标签价值
111start1
111mid2
111end3
222start1
222end2
333start1
333mid2
333start3

如果我们要选择所有标有“start”和“end”的值,如下图,sql查询怎么写?

预期结果:

ID姓名聚合值
111aaa1,3
222bbb1,2
333bbb1,3

select u.ID, u.Name, listagg(Value, ', ') within group (order by Tag) as AggValues from User u left outer join Record r on u.ID = r.ID and r.Tag in ('start', 'end') group by u.ID, u.Name;

一个常见的错误是缺少最后一个 group by 子句中的字段。每个选择字段也应该在 group by 子句中。在本例中,我们选择 select ID 和 Name,因此应该使用 ID 和 Name 对结果进行分组。

感谢各位的阅读,以上就是“在Oracle中的多个连接表上怎么使用LISTAGG()”的内容了,经过本文的学习后,相信大家对在Oracle中的多个连接表上怎么使用LISTAGG()这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI