2012-05-09 32 views
-1

我可以在oracle中這樣做嗎?我有這樣的一些數據:將查詢結果合併爲單行 - Oracle

No | Data | 
=========== 
1 | A | 
1 | B | 
1 | C | 
1 | D | 

是否有任何查詢可以產生像這樣的結果?

No | Data  | 
================= 
1 | A, B, C, D | 

非常感謝:d

+1

可能重複http://stackoverflow.com/questions/ 468990/how-can-i-combine-multiple-row-in-a-com-delimited-list-in-oracle) – APC

+0

這個問題在SO上被問過很多次。我鏈接到上面的線程包含所有常見的答案。你會發現至少有一個能夠幫助你使用任何版本的Oracle。 – APC

+0

這種技術被稱爲「字符串聚合」。看到這樣的問題標籤:http://stackoverflow.com/questions/tagged/string-aggregation。 –

回答

0

在Oracle中我們可以使用wm_concat函數。下面是例如上面的查詢:

SELECT no, wm_concat(data) from table group by no 

參考:wm_concat

+1

請注意,wm_concat沒有記錄,因此請自擔風險。 –

+0

很不錯:用my_table作爲 ( select 1 num,'A'col from dual union select 1 num,'B'col from dual union select 1 num,'C'col from dual union select 1 num, 'D'col from double union select 2 num,'E'col from dual union select 2 num,'F'col from dual union select 2 num,'G'col from dual union select 2 num,'H 'col from dual ) select num,wm_concat(col) from my_table group by num ; –

0
select 
    no, 
    rtrim (xmlagg (xmlelement (d, data|| ',')).extract ('//text()'), ',') data 
from 
    table_name 
group by 
    no 
; 
1

SQL Fiddle

的Oracle 11g R2架構設置

CREATE TABLE TEST (ID, DATA) AS 
      SELECT 1, 'A' FROM DUAL 
UNION ALL SELECT 1, 'B' FROM DUAL 
UNION ALL SELECT 1, 'C' FROM DUAL 
UNION ALL SELECT 1, 'D' FROM DUAL 
UNION ALL SELECT 2, 'E' FROM DUAL 
UNION ALL SELECT 2, 'F' FROM DUAL; 

查詢1

SELECT ID, 
     LISTAGG(DATA, ',') WITHIN GROUP (ORDER BY DATA) AS AGGREGATED_DATA 
FROM TEST 
GROUP BY ID 

Results

| ID | AGGREGATED_DATA | 
|----|-----------------| 
| 1 |   A,B,C,D | 
| 2 |    E,F | 
的[?我如何將多個行插入到Oracle中的逗號分隔的列表(