Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql listagg输出格式_Sql_Oracle_Sqlplus - Fatal编程技术网

Sql listagg输出格式

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

我试图使用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
----------
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;

谢谢!非常感谢