2016-12-02 101 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