Oracle SQL Разработчик - Concat Data - PullRequest
0 голосов
/ 06 мая 2020

Добрый день,

У меня есть таблица, в которой есть столбец, содержащий только числа. Однако из-за того, что он содержит данные правил для специальных идентификаторов, он возвращает результат в большем количестве строк, например:

у вас есть база данных книжного магазина, где все клиенты имеют идентификатор, а книги также имеют свой собственный идентификатор. Когда вы sh узнаете, сколько книг было заказано каждым покупателем, где результат ошибочен, чем 1, он будет отображаться в нескольких строках, где идентификатор покупателя такой же, но в каждой строке идентификаторы книг разные.

Мой вопрос:

Каков правильный синтаксис или фрагмент кода, который нужно использовать, чтобы получить одну строку только для каждого клиента, где идентификаторы книг разделены запятыми в одном столбце ?

Вот так пробовал:

BOOK_CONT AS (
SELECT DISTINCT BOOK_ID, LISTAGG(' ('||BOOK_ID||')', '; ')WITHIN GROUP (ORDER BY BOOK_ID) AS BOOKS
FROM BOOK_LIST)

1 Ответ

0 голосов
/ 06 мая 2020

Вы должны использовать group_by и listagg(). Предполагая, что в вашей таблице есть столбцы customer_id и book_id, вы должны go:

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