2011-03-03 85 views
0

可能重複:
Oracle: Combine multiple results in a subquery into a single comma-separated value甲骨文視圖分組元素

嗨,

這是我的問題...

我有一個表:

+------+------+------+ 
| CODE | NAME | TYPE | 
+------+------+------+ 
| 1 | AAA | x | 
+------+------+------+ 
| 2 | BBB | x | 
+------+------+------+ 
| 3 | CCC | y | 
+------+------+------+ 
| 4 | DDD | y | 
+------+------+------+ 

我要讓Oracle中的視圖....我想的結果是:

+---------+------+ 
| NAME | TYPE | 
+---------+------+ 
| AAA;BBB | x | 
+---------+------+ 
| CCC;DDD | y | 
+---------+------+ 

我可以分組AAA和BBB,因爲他們有相同的類型,一種觀點認爲,在名稱將爲「 AAA; BBB「......將不同的名字分組;

任何人都可以幫助我嗎?

問候,

托馬索

+0

另請參閱:http://stackoverflow.com/questions/1120706/is-there-an-oracle-sql-query-that-aggregates-multiple-rows-into-one-row – 2011-03-03 17:21:09

回答

2

蒂姆·霍爾有一個頁面,其中涵蓋了甲骨文取決於Oracle版本提供的各種string aggregation techniques,哪些軟件包安裝在數據庫中,你是否可以創建新的程序,支持這一點,或者你是否希望它在純SQL中完成。

如果你使用11.2,最簡單的辦法是使用內置的LISTAGG分析功能可按

SELECT listagg(name, ';') within group (order by code), type 
    FROM your_table 
GROUP BY type 

如果您使用的是較早的版本,我更傾向於將使用自定義聚合函數(蒂姆的string_agg)。