質問 |
||
| QNo.3759383 | 1つのカラムに複数レコードの値を・・・ | |
|---|---|---|
| 質問者:sinomori |
お世話になります。 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_あ |
|
困り度:
|
||
| 質問投稿日時: 08/02/09 16:41 |
||
回答 |
|
| ANo.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 ; |
|---|---|
| 回答者:k_o_r_o_c_h_a_n | |
| 種類:回答 どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/02/09 19:28 |
|
| |
| この回答への補足 | この回答に補足をつける(質問者のみ) |
| この回答へのお礼 | 返事遅くなってすみません。 これが階層問い合わせというんですか。 ネットで調べてたんですが、関数の使い方がまたっくわからなくて、どうしもなく、ここで質問しました^^; 回答を解析しならが、勉強します。 ありがとうございます。 |