Oracle:选择CSV格式的项目?

Mar*_*son 3 sql csv oracle

假设我有一个查询

select name from tbl where dept = 123
Run Code Online (Sandbox Code Playgroud)

它返回一个这样的数据集

bob
carol
steve
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以本地表达(在sql中,或者可能是一个过程?)一个查询,它将数据作为CSV或空格分隔列表返回?

bob,carol,steve
Run Code Online (Sandbox Code Playgroud)

Jus*_*ave 7

什么版本的Oracle?

Tim Hall有一个描述Oracle中各种字符串聚合技术的页面.如果您使用的是Oracle 11.2,那么最简单的选择就是

SELECT listagg(name, ',') within group( order by name)
  FROM table_name
 WHERE dept = 123
Run Code Online (Sandbox Code Playgroud)

如果您使用的是早期版本的Oracle,则还有许多其他方法具有各种优点和缺点.蒂姆对各种方法的比较非常完整.