【发布时间】:2016-10-24 10:18:52
【问题描述】:
我已经使用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;
但由于补充书的数量较多,所以我重复获得主要书名。
有没有办法删除重复的主书名和编号。
我的输出是这样的
-99,Anders Carlson ,-109,John Stuart,-99,Anders Carlson ,-47,James Anderson
这里重复了 99,我只想要一个 99。
期望的输出:
-99,Anders Carlson ,-109,John Stuart,-47,James Anderson
数据库数据:
书单:
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 我已经添加了我的输出和想要的结果,请检查
-
如果你有一本书有很多补充,如何选择要显示的?有订单吗,要随机的吗?
-
没有顺序,我想把这本书和它的补充书籍列在一个列名下
-
我不清楚。请发布一些示例数据(表中的 daa 提取)以及您需要为该数据获取的内容。另外,为什么在查询中需要 AUTHORS 表?