- - PR -
Oracleのselect文で教えてください
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-11-05 14:17
下記のようなテーブルがあります。
CREATE TABLE 在庫tbl ( 品名 CHAR(15), 場所 CHAR(15), 数量 NUMBER(11,3) ) データは以下の内容がはいっているとします。 品名 場所 数量 A 001 1 A 002 2 A 003 3 B 001 1 B 004 2 C 005 1 これを、以下の様にselectするSQL文を教えて頂けないでしょうか。 品名 場所1 数量1 場所2 数量2 場所3 数量3 A 003 3 002 2 001 1 B 004 2 001 1 null null C 005 1 null null null null ※横軸は数量の多い順に場所1→場所3まで rownumを使用すればできるのかと思い、考えてみたのですが、 できませんでした。 どなたか、教えていただけますようにお願いします。 | ||||
|
投稿日時: 2007-11-05 14:33
このテーブルのキーは何?
もしかして品名ですか? SELECT文を教えてという以前に根本的におかしいです。 もしこんなテーブルが存在したら即効ドロップですよ。 | ||||
|
投稿日時: 2007-11-05 14:36
キーは品名と場所です。
一つの場所に複数の品名を管理することができます。 | ||||
|
投稿日時: 2007-11-05 15:16
複数の項目でキーになるのは構いませんが、 通常、キーで使用する項目は商品コード等であり、 品名のような名称は使用しません。 今の時期だから新人研修じゃないと思いますが、 このテーブルは業務システムで使っているんですか? まあそんなの有得ないと思いますが・・・。 ちなみに、一つのテーブルに別名を付けて、 それを複数指定すればやりたいと思われることは出来るはず。 別にオラクルがどうとかっている次元の話じゃない。 上で言っていることも全てそう。 SQL文の基本書でも読めば書いてあるはず。 このレベルの事は殆どのエンジニアは自然に理解すると思います。 | ||||
|
投稿日時: 2007-11-05 15:47
初歩的な質問で申し訳御座いませんでした。
わかりやすくと思い、品目コードを品名としていました。 余計混乱させたみたいで、申し訳御座いませんでした。 一応、以下のようなやりかたで、なんとかできそうなことがわかりました。 アドバイス等ご記入の方々にありがとう御座いました。 −−−−−−−−−−−以下、SQL文−−−−−−−−−−− select 在庫1.品名,在庫1.場所,在庫1.在庫数,在庫1.row_number ,在庫2.場所,在庫2.在庫数,在庫2.row_number from ( select 在庫1.品名,在庫1.場所,在庫1.在庫数,t91_1.row_number from ( select 品名,場所,在庫数,row_number from ( select 品名,場所,在庫数,row_number() over (partition by 品名 order by 在庫数 desc) as row_number from 在庫tbl where 在庫数<>0 ) where row_number <= 2 )在庫1 where row_number=1 )在庫1 , ( select 在庫2.品名,在庫2.場所,在庫2.在庫数,t91_2.row_number from ( select 品名,場所,在庫数,row_number from ( select 品名,場所,在庫数,row_number() over (partition by 品名 order by 在庫数 desc) as row_number from 在庫tbl where 在庫数<>0 ) where row_number <= 2 )在庫2 where row_number=2 )在庫2 where 在庫1.品名=在庫2.品名(+) |
1