2012-01-10 40 views
3

假设我有一个查询Oracle:选择CSV格式的项目?

select name from tbl where dept = 123 

返回一个数据集,这样

bob 
carol 
steve 

是否存在的天然表达的方式(在SQL中,或者一个过程?)查询将返回数据作为一个CSV或空格分隔列表?

bob,carol,steve 
+1

你好几年前曾问过类似的问题:) [Oracle:归一化字段为CSV字符串](http://stackoverflow.com/q/1441971) – Sathya 2012-01-10 04:28:01

回答

7

什么版本的Oracle?

Tim Hall有一个页面描述各种string aggregation techniques in Oracle。如果您使用的是Oracle 11.2,最简单的方法是

SELECT listagg(name, ',') within group(order by name) 
    FROM table_name 
WHERE dept = 123 

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