- - PR -
Oracle SQL に関して
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-04 13:50
Oracle SQL超初心者の者です。
以下のようなテーブルがあったとします。 EMPCDはvarchar型、ROLECDはnumber型です。 EMPCD ROLECD 5001758 12 5001758 17 5002031 12 5002031 17 5001988 17 上記の表から、以下のようなViewを作成したいのですが。。。 (なお、EMPCD,ROLECD1,ROLECD2はvarchar型) EMPCD ROLECD1 ROLECD2 5001758 12 17 5002031 12 17 5001988 null 17 環境としましてはOracle8i及び9iを想定しております。 このようなことがOracle SQLで実現可能であれば是非とも教えていただきたいです。 宜しくお願い致します。 | ||||||||
|
投稿日時: 2004-09-04 14:02
ども、ほむらです。
-------- nullができるかはちょっとわからないけど やりたいこと自体そのものは結合を使えばできると思いますよ。 ポイントは同じテーブルでつなげたい物をサブクエリの条件で指定するところです 以下 適当です。うごくかわかりません(^^;;;
たぶんにたような物になると思いますけど。 # 参考になるのは。 # SAK Streets - SQL 開発言語資料 # http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sak3sql.htm 見直したらサブクエリがめちゃくちゃだったので修正ついでにコードタグを挿入 [ メッセージ編集済み 編集者: ほむら 編集日時 2004-09-04 14:05 ] | ||||||||
|
投稿日時: 2004-09-04 14:14
ほむらさん、ありがとうございます。
確認してみます。 他にも方法があるようでしたら情報を頂きたく思います。 皆様、どうか宜しくお願い致します。 | ||||||||
|
投稿日時: 2004-09-05 18:10
やってないのでアレですが、こんな風になりそうな?
hiroさん> テーブル定義をもう一度見直した方が良くないでしょうか。同じEMPCDは、2つ以下しかないのでしょうか? | ||||||||
|
投稿日時: 2004-09-06 11:47
ROLECDの数が決まっているのであれば、これで例のデータを取得できると思います。 要求仕様に合いますでしょうか? [追加] GROUPするの忘れていました・・・。 EMPCDでグループ化してROLECD1等は、MAX関数かなんかで取得してください。 [ メッセージ編集済み 編集者: たるたる 編集日時 2004-09-06 14:46 ] | ||||||||
|
投稿日時: 2004-09-06 13:15
はじめまして、Ru.Fと申します。
・全件テーブルA ・12で絞り込んだテーブルB ・17で絞り込んだテーブルC 3つのビューを作成しA=B・A=Cで外部結合を行います。 BのROLECDをROLECD1に、CのROLECDをROLECD2に それぞれ編集した結果を重複削除をすれば 上記の結果が得られるのではないでしょうか。 以上 -- Ru.F | ||||||||
|
投稿日時: 2004-09-06 21:34
ども、ほむらです。
-------- Jitta氏へ >やってないのでアレですが、こんな風になりそうな? 僕もそんな気がします^^;;; 条件書き忘れたぁと思ったらRu.F氏の発言でさらに間違い発覚^^;; んーMySQLあたりのデータベースイントールしちゃおうかなぁ。。。 すっかりSQLがくめない体に(涙 # FreeBSD勉強中なのでついでということで。。 # ↑まだシェルを勉強している段階(笑 | ||||||||
|
投稿日時: 2004-09-06 21:58
皆様、ご回答ありがとうございます。
皆様から頂いた内容をもとに確認を致しました。 >ほむらさんへ ほむらさんのやり方でやってみましたが、Jittaさんがおっしゃるとおりの結果となりました。 別な方法がありましたら教えていただけますでしょうか。 宜しくお願い致します。 >Jittaさんへ テーブル定義については現在の状態を維持したいと考えております。 EMPCDですが、2つ以上存在いたします。 最初に記述したデータにかんしては全データの一部を抜粋したものとなります。 何かよい案がありましたら、教えていただけますでしょうか。 宜しくお願い致します。 >たるたるさんへ ROLECDの数はだいたい5〜10くらいになります。 [追加] で記述した部分に関して、試してみましたがうまくいきません。 SELECT EMPCD , DECODE(ROLECD, 12, '12', 'null') AS ROLECD1 , DECODE(ROLECD, 17, '17', 'null') AS ROLECD2 FROM TBL GROUP BY EMPCD 上記の書き方では問題ありますでしょうか。 >Ru.Fさんへ 具体的なSQLを教えていただけると嬉しいです。 お手数をお掛けして申し訳ありません。 宜しくお願い致します。 |