• 締切済み

1つのカラムに複数レコードの値を・・・

お世話になります。 SQL文の作成に難航しています。 どうか知恵を貸してください。 環境:VS2005 Oracl10g 言語:VB.Net A_TABAL NO |GroupNO| 1 |A_1 1 |A_1 1 |A_1 B_TABAL NO |K_NO|K_N 1 |K_1 |項目名1_あ 1 |K_1 |項目名1_い 1 |K_2 |項目名2_あ 1 |K_1 |項目名1_う 1 |K_2 |項目名2_あ 1 |K_2 |項目名2_あ AテーブルとBテーブルのNOが一致するもので、K_NOがK_1であれば、 項目名1というカラムにいれる。 (複数の場合はカンマ区切りでいれる) K_NOがK_2であれば、項目名2というカラムにいれる。 (Bテーブルでは K_1とK_2のレコード数は同じ、実際とってくるときは、NOが同じであれば、重複なものは消すと) 求めたい結果 NO |GroupNO  |項目名1               |項目名2 1  |A_1     |項目名1_あ,項目名1_い,項目名1_う|項目名2_あ

みんなの回答

回答No.1

テストしてないけど、こんな感じかな select z.NO,z.GroupNO,x.項目名1,y.項目名2 from ( select NO,sys_connect_by_path(K_N,',') 項目名1 from ( select b.*,row_number() over(partition by NO,K_NO order by K_N) R from (select distinct * from B_TABAL where K_NO='K_1') b ) start with R=1 connect by prior R = R -1 and prior NO=NO ) x, ( select NO,sys_connect_by_path(K_N,',') 項目名2 from ( select b.*,row_number() over(partition by NO,K_NO order by K_N) R from (select distinct * from B_TABAL where K_NO='K_2') b ) start with R=1 connect by prior R = R -1 and prior NO=NO ) y, ( select distinct * from A_TABAL ) z where z.NO=x.NO and z.NO=y.NO ;

sinomori
質問者

お礼

返事遅くなってすみません。 これが階層問い合わせというんですか。 ネットで調べてたんですが、関数の使い方がまたっくわからなくて、どうしもなく、ここで質問しました^^; 回答を解析しならが、勉強します。 ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A