我可以在oracle中這樣做嗎?我有這樣的一些數據:將查詢結果合併爲單行 - Oracle
No | Data |
===========
1 | A |
1 | B |
1 | C |
1 | D |
是否有任何查詢可以產生像這樣的結果?
No | Data |
=================
1 | A, B, C, D |
非常感謝:d
我可以在oracle中這樣做嗎?我有這樣的一些數據:將查詢結果合併爲單行 - Oracle
No | Data |
===========
1 | A |
1 | B |
1 | C |
1 | D |
是否有任何查詢可以產生像這樣的結果?
No | Data |
=================
1 | A, B, C, D |
非常感謝:d
也許this page顯示你在找什麼。
在Oracle中我們可以使用wm_concat
函數。下面是例如上面的查詢:
SELECT no, wm_concat(data) from table group by no
參考:wm_concat
請注意,wm_concat沒有記錄,因此請自擔風險。 –
很不錯:用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 ; –
select
no,
rtrim (xmlagg (xmlelement (d, data|| ',')).extract ('//text()'), ',') data
from
table_name
group by
no
;
的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
| ID | AGGREGATED_DATA |
|----|-----------------|
| 1 | A,B,C,D |
| 2 | E,F |
的[?我如何將多個行插入到Oracle中的逗號分隔的列表(
可能重複http://stackoverflow.com/questions/ 468990/how-can-i-combine-multiple-row-in-a-com-delimited-list-in-oracle) – APC
這個問題在SO上被問過很多次。我鏈接到上面的線程包含所有常見的答案。你會發現至少有一個能夠幫助你使用任何版本的Oracle。 – APC
這種技術被稱爲「字符串聚合」。看到這樣的問題標籤:http://stackoverflow.com/questions/tagged/string-aggregation。 –