首页 > 解决方案 > 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)

标签: sqlstringoracleselectgroup-by

解决方案


你会使用group_bylistagg()。假设你的表有列customer_idbook_id,你会去:

select
    customer_id,
    listagg(book_id, ', ') within group(order by book_id) all_book_ids
from book_list
group by customer_id

推荐阅读