Я использовал listagg
для составления списка и списка книг вместе с именем дополнительной книги.Удалить повторяющиеся значения из списка в оракуле
SELECT DISTINCT SUBSTR(LISTAGG(',-'||B1.BOOK_NO||','||B1.BOOK_NAME||','||A.AUTHOR_NAME||',-'||B2.BOOK_NO||','||B2.BOOK_NAME) WITHIN GROUP (ORDER BY B2.BOOK_NO),2)
FROM BOOK_LIST B1
INNER JOIN AUTHORS A ON A.AUTHOR_NO=B1.AUTHOR_NO
INNER JOIN SUPPLEMENTARY B2 ON B2.BOOK_NO = B1.BOOK_SUP_NO
WHERE B1.SEQ = 123;
Но поскольку количество дополнительных книг больше, я получаю название основной книги повторно.
Есть ли способ удалить дублирующее имя и номер главной книги.
Мой Ouput подобен этому
-99,Anders Carlson ,-109,John Stuart,-99,Anders Carlson ,-47,James Anderson
Здесь значение 99 повторяется я хочу только один 99.
Желаемая Выход:
-99,Anders Carlson ,-109,John Stuart,-47,James Anderson
данных DB:
Book_list:
NO | MAIN_BOOK_NO | MAIN_BOOK_NAME | BOOK_SUP_NO | AUTHOR_NO
1 | 12 | xyz | 5 | 2
2 | 22 | abc | 7 | 4
Авторы:
NO | AUTHOR_NO | AUTHOR_NAME
1 | 2 | Alex
2 | 3 | Leonard
3 | 4 | Benjamin
Дополнительный:
NO | BOOK_NO | BOOK_NAME
1 | 5 | ABC
2 | 5 | XYZ
3 | 7 | LMN
4 | 7 | DEF
5 | 7 | NEW
Выходной сигнал должен быть как
NAME
12,xyz,Alex,-5,ABC,-5,XYZ
22,abc,Benjamin,-7,LMN,-7,DEF,-7,NEW
Аналогично для всех данных в таблице
Пожалуйста, разместите несколько примеров данных и желаемого результата. – Aleksej
@Aleksej Я добавил свой результат и желаемый результат, пожалуйста, проверьте –
Если у вас есть книга со многими дополнениями, как выбрать тот, который нужно показать? У вас есть заказ, вы хотите случайный? – Aleksej