Sql listagg输出格式
我试图使用Listag将每个BookId及其所有作者列在同一行上 我希望它看起来像这样Sql listagg输出格式,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,我试图使用Listag将每个BookId及其所有作者列在同一行上 我希望它看起来像这样 BOOKID AUNAMES 1101: Dilbert Emerson Sartre. 但是当我执行命令时,输出的格式很差 select BOOKID, listagg (AUNAME,',') WITHIN GROUP (ORDER BY auname) AUNAMES FROM BOOK_AUTHOR group by bookid; 看起来是这样的: BOOKID ---------- AUNA
BOOKID AUNAMES
1101: Dilbert Emerson Sartre.
但是当我执行命令时,输出的格式很差
select BOOKID,
listagg (AUNAME,',') WITHIN GROUP (ORDER BY auname)
AUNAMES
FROM BOOK_AUTHOR
group by bookid;
看起来是这样的:
BOOKID
----------
AUNAMES
------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------
1101
Dilbert,Emerson,Sartre
select BOOKID,
listagg (AUNAME,',') WITHIN GROUP (ORDER BY auname)
AUNAMES Format A25
FROM BOOK_AUTHOR
group by bookid;
我正在使用SQL plus没有任何东西可以阻止您将查询作为子查询并再次选择:
SELECT BOOKID || ':' || AUNAMES FROM
(
select BOOKID,
listagg (AUNAME,' ') WITHIN GROUP (ORDER BY auname)
AUNAMES
FROM BOOK_AUTHOR
group by bookid
) A
如果要使用空格作为分隔符,请在listagg函数中使用空格使用format命令。
例子:
如果列长度为500,行大小仅为80,则下一列值将不会出现在同一行上
在您的情况下,请使用如下格式:
BOOKID
----------
AUNAMES
------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------
1101
Dilbert,Emerson,Sartre
select BOOKID,
listagg (AUNAME,',') WITHIN GROUP (ORDER BY auname)
AUNAMES Format A25
FROM BOOK_AUTHOR
group by bookid;
Oracle中的所有格式化内容都可以通过关键字“SQLPlus formatting”进行搜索。下面是一个很好的链接(不包括所有内容):
听起来您只是想连接这两列 一种方法是使用
|
:
select BOOKID || ': ' || listagg (AUNAME,',') WITHIN GROUP (ORDER BY auname)
FROM BOOK_AUTHOR
group by bookid;