2016-12-02 100 views
0

我有一個數據集名稱在一列和其他幾列。我想顯示字段中的所有其他值是相同的,並將名稱連接起來。連接來自同一字段的多個行的值,彙總

例如

col 1 col 2 col 3 
    a  1  mary 
    a  1  jane 
    a  1  kevin 
    b  2  mary 
    b  2  jane 
    b  2  kevin 
    c  3  mary 
    c  3  jane 
    c  3  kevin 

輸出爲:

a  1  mary, jane, kevin 
b  2  mary, jane, kevin 
c  3  mary, jane, kevin 

我曾嘗試使用RTRIM,但它沒有做任何事情。我也嘗試使用listagg,但我得到一個錯誤'不是一個由表達式組'

所有字段都是字符串,不可計算。

TIA

+0

你知道你必須使用'listagg'。你能展示你目前的嘗試嗎? –

+0

如果在嘗試listagg()時遇到「不按表達式分組」的錯誤,是否嘗試添加「GROUP BY」子句?更簡單的說,當你嘗試'listagg()'並且它不起作用時,你是否使用過Google(帶有搜索短語,比如'Oracle listagg')?這將帶你到Oracle文檔,並解釋這個函數是什麼,正確的語法和一些例子。習慣使用谷歌搜索Oracle文檔的習慣,您會發現至少和本網站一樣有幫助。 – mathguy

回答

3

詳細here

select col1, 
     col2, 
     listagg(col3,  -- The aggregated column 
       ',')  -- The delimiter 
     within group -- Because this is an aggregated function, needs to be grouped 
     (order by Col3) -- We can order the aggregated values 
      as Col3  -- And an alias for good measure 
from TableA 
group by col1, col2