- ベストアンサー
オラクル結合SQLでtable1とtable2を結合し、view1を作成する方法
- オラクル9.1で、table1とtable2を結合して、view1を作成するSQLの方法について教えてください。
- うまい結合方法がわからず困っています。オラクル初心者です。
- table1とtable2を結合して、view1を作成するための適切なSQL文をお教えください。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
select a.*,b.* from table1 a, ( select no, 項目, max(decode(種別,'01',結果)) 結果1, max(decode(種別,'02',結果)) 結果2, max(decode(種別,'03',結果)) 結果3 from table2 group by no,項目 ) b where a.no=b.no and a.項目=b.項目; とかで良いと思いますけど。
その他の回答 (1)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
select no, 項目, max(decode(種別,'01',結果)) 結果1, max(decode(種別,'02',結果)) 結果2, max(decode(種別,'03',結果)) 結果3 from table2 group by no,項目; のような書き方が簡単な方法です。 あなたの書きたかったSQLを完成させるとしたら、 select x.no,x.項目,a.結果,b.結果,c.結果 from table1 x,table2 a,table2 b,table2 c where x.no = a.no and x.項目=a.項目 and a.種別='01' and x.no = b.no and x.項目=b.項目 and b.種別='02' and x.no = c.no and x.項目=c.項目 and c.種別='03'; みたいな感じかと思いますが、幾重にも結合するので、速度的には 不利なSQLとなります。
お礼
ありがとうございます!できました! すごくシンプルでよいです。 ちなみに、これにtable1から列を追加したい場合は、 これにfrom を追加する感じがシンプルでしょうか? view1 良い例2 no 項目 結果1 結果2 結果3 その他 その他1 1 1 3 8 7 xx yyy 1 2 9 6 2 fww ffd 1 3 1............ ...................
お礼
できました! fromの方をいじればいけますね。 ありがとうございました!