3

私は Oracle 10 g を使用しています。次のようなシナリオがあります。

名前なし
-- -----
1 ロニー
1 ジェームズ
1 アビー
2 サム
2 ウィリー
3 マイク

結果を取得するには、文字列を集約して連結する必要があります (間にスペースを 1 つ入れます)。

名前なし
-- -----
1 ロニー・ジェームス・アビー
2 サム・ウィリー
3 マイク

私は Oracle 10g を使用しており、PL/SQL ではなく SQL を使用してこれを実装する必要があります。抜け道はありますか?

4

4 に答える 4

3

このクエリを試してください

select No  , rtrim(Name,',') Name
   from ( select No , Name , rn from yourtable
           model
  partition by (No)
  dimension by (row_number() over
 (partition by No order by Name) rn
 )
 measures  (cast(Name as varchar2(40)) Name)
   rules
 ( Name[any] order by rn desc = Name[cv()]||' '||Name[cv()+1]
   )
  )
    where rn = 1
    order by NO

これがあなたのSQL デモです

于 2013-06-26T06:43:32.607 に答える
0

このSQLクエリを試してください

SELECT 
  [No],
  STUFF((
    SELECT ' ' + Name
    FROM #tbl_concat 
    WHERE ([No] = Results.[No]) 
    FOR XML PATH (''))
  ,1,0,'') AS NameValues
FROM #tbl_concat Results
GROUP BY [No] 
于 2013-06-26T07:43:45.393 に答える