2016-12-02 8 views
0

名前が1つの列に複数の列があるデータセットがあります。私はフィールドの他のすべての値が同じである場所を示し、名前を連結したいと思います。同じフィールドの複数の行の値を連結して集約する

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()'を試してもうまくいかなかった場合、(Oracle listaggのような検索フレーズで)Googleを使いましたか?これにより、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 
関連する問題