sql - Oracle SQL Developer - 连接数据
问题描述
再会,
我有一个表,其中有一列只包含数字。但是,由于它包含特殊 ID 的规则数据,它会以更多行返回结果,例如:
你有一个书店数据库,所有顾客都有一个 ID,书籍也有自己的 ID。当您想知道每个客户订购了多少本书而结果比 1 差时,它将出现在多行中,其中客户的 ID 相同,但每一行的书 ID 都不同。
我的问题是:
什么是正确的语法或代码部分,用于仅为每个客户获取一行,其中书籍 ID 在同一列中用逗号分隔?
我试过这样:
BOOK_CONT AS (
SELECT DISTINCT BOOK_ID, LISTAGG(' ('||BOOK_ID||')', '; ')WITHIN GROUP (ORDER BY BOOK_ID) AS BOOKS
FROM BOOK_LIST)
解决方案
你会使用group_by
和listagg()
。假设你的表有列customer_id
和book_id
,你会去:
select
customer_id,
listagg(book_id, ', ') within group(order by book_id) all_book_ids
from book_list
group by customer_id
推荐阅读
- node.js - 带有 Twit 的 Node.js - AND 运算符问题
- c++ - 如何在cpp文件ROS中查找头文件路径
- java - 如何从有序列表中选择随机起始位置?
- python - 为什么“for loop in”未能在现有列表的第 6 和第 8 索引处应用 .remove() 方法
- c++11 - 如何将 std::make_shared 与单例实例一起使用
- android - AndroidX AppCompat 包的 Proguard 规则
- python - 我如何每次从列表池中生成唯一问题
- pandas - 按关键时间列消除行并排序
- r - 如何通过r中的字符变量引用表中的列?
- python - 如何编写获取此 JSON 数据并将其转换为数据表的 Python 脚本