2016-08-11 12 views
0

誰もOracleの行を単一の列に結合する方法を知っていますか?行をOracleの単一列に結合

Customer  CustomerBought 
------------------------------------------ 
John   Laptops, Phones 
Lisa   Watches 

ありがとう:

Customer Bought 
---------------------------- 
John  laptops 
John  Phones 
Lisa  Watches 

は、私は、クエリは次の形式を生成します:たとえば、私はこのテーブルを持っていると言います!

+0

LISTAGGまたはWM_CONCAT機能を見ることができます。 –

+0

次回に質問にテーブルを追加するときは、テーブルを選択してCtrl + Kを押します。次に、ブロック全体を4つのスペースでインデントします。これは、改行を維持し、モノスペースの文字を使用します。 – trincot

+0

質問...これをOracle 11gとしてタグ付けしましたか、それともシステムによって実行されましたか?そして、関連する - もしあなたがOracle 11上にいたら、それはバージョン11.1か11.2ですか?しばしばそれは問題ではありませんが、パトリックの解法で使われている 'LISTAGG()'(これは絶対に完全な答えです)は11.2で導入されました。あなたが11.1にいる場合、あなたは運が悪いので、別の解決策が必要になります。 – mathguy

答えて

2
with data_qry (name, item) 
as 
(select 'John', 'Laptop' from dual union all 
select 'John', 'Phone' from dual union all 
select 'Lisa', 'Watches' from dual union all 
select 'Lisa', 'Glasses' from dual 
) 
select name, listagg(item, ', ') within group (order by item) as items 
from data_qry 
group by name 
+1

素早い返答をありがとう。 LISTAGG()は私が必要なものです。私はOracle 12cを使用しています。再度、感謝します。 – sydney

関連する問題