• 締切済み

ORACLE SQL 教えてください。

オラクルSQLの初心者です。 (1)のテーブルから (2)のテーブルを作成する方法はありますか?教えて下さい。 (2)のテーブルを元に他のテーブルの色々な値を取得したいです。 (1) TEMP1 -------------------------- CODE YEAR_START YEAR_END --------------------------  01    08        11  02    08        09  03    11        11 (2) TEMP2 --------------------- CODE YEAR ---------------------  01   08  01   09  01   10  01   11  02   08  02   09  03   11

  • Oracle
  • 回答数1
  • ありがとう数1

みんなの回答

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

こんな感じでしょうか。 --全角でインデントしています create table temp2 as select  code, to_char(to_number(year_start) + rnum , '00') year from (  select   a.code, a.year_start, to_number(a.year_end) - to_number(a.year_start) term   ,row_number() over(partition by a.code order by rownum) - 1 rnum  from temp1 a, temp1, temp1) where rnum <= term; 1.クロスジョインを使って行数を増やし、各codeごとに0からの連番を振ります。 2.start_yearからend_yearまでの期間分の行を取得します。 3.取得した行のstart_yearに1.で振った連番を加算することで期間中のyearが取得できます。 質問する際には使用しているOracleのバージョンまで明記されるといいですよ。 バージョンによって使用できる関数などが違ってきますので。

hikomi
質問者

お礼

ありがとうございます!! 説明付きでとても理解し易かったです。

関連するQ&A

  • オラクルSQLでこれは出来るのですか?

    オラクルのSQLにおいて、テーブルや各フィールドのコメント(COMMENT)を取得することは出来るのですか? もし出来るのでしたら教えてください。

  • SQL (ORACLE)について

    こんにちは。 SQL文について教えてください。 【temp1テーブル】 code name value 001 yama 100 002 kawa 200 003 umi 300 【temp2テーブル】 code name value 002 kawa 200 004 minato 500 上記の2つのテーブルtemp1とtemp2を比較して codeの値とnameの値が同じレコードの場合 temp1のvalue値を temp1のvalue + temp2のvalueにする 方法を教えて頂けませんでしょうか。

  • オラクル結合SQL

    こんばんわ。オラクル初心者です。 オラクル9.1で、下記のようにtable1とtable2を結合して、view1(oracleビュー) を作成したいのですが、どのようなSQLがよいでしょうか。 なかなかうまい方法がなくてこまっています。 table1 no 項目 その他 その他1 1   1 1  2 1  3 .....省略 table2 no 項目 種別 結果 1  1  01  3 1  1  02   8 1  1   03  7 1  2  01  9 1  2   02   6 1  2  03  2 1  3  01   1 ...... view1 良い例 no 項目 結果1 結果2 結果3 1   1   3   8   7    ←種別01 02 03を順にいれる 1   2  9   6  2 1  3  1............ select table1.no,table1.項目,・・・ from table1,table2 where table1.no = table2.no and table1.項目 = table2.項目 ↑おおよそこのような感じになるとは思ってます。 何とか頑張ったのですが、下記のようになってしまうことが 多かったです・・・。どこかSQLがわるいようです。 view1 悪い例 no 項目 結果1 結果2 結果3 1  1   3   8  7 1  1   3   8  7 1  1   3   8  7 1   2  9  6  2 1   2  9  6  2 1   2  9  6  2 1   3  1............ もしご存知の方いらっしゃいましたら、助かります。よろしくお願いいたします。

  • ORACLEテーブルを作成したSQLを調べたい

    バックアップに別サーバに同じORACLEテーブルを作成することとなりました。 どんなSQLでそのテーブルを作成したのか資料が無くてわかりません。 調べる方法を教えてください。よろしくお願いします。

  • Oracle 11でSQLで応答がなくなる

    Oracle 11.2.0.1ですが12万件ある1つのテーブルが急にSQLで応答がなくなります。 それまでは、順調に動作しており、新規作成してデータ移行しRENAMEすると応答し正常に検索されますが また、数日すると同じ症状でSQLで応答がなくなります。 11.2は、、「オプティマイザ・フィードバック」という機能に関するバグらしく、この機能をOFFしました。 その後でもSQLで応答がしなくなっています。(1テーブルのみ)再起動済みです。 解決方法がないですか? また、手っ取り早い方法があれば伝授願います。

  • オラクルで

    オラクルのSQLでの質問ですが、 2つのテーブルに同じ名前の列があります。 TEMP1         TEMP2 ----------      ------------- NAME CODE      NAME  NUM aaa   1         ccc   5 bbb   2         ddd   10 この2つのテーブルを検索して、同じ列として表示したいのですが 可能なのでしょうか? NAME ----------- aaa bbb ccc ddd このようにしたいのですが、ビューなどは使ってかまわないのですが 方法がありましたら教えてください。

  • ORACLE9iがわかる方

    SQL Plusからのデータのインポートの方法を教えていただきたいです。元データはACSESSで用意されていて、ORACLEの方にユーザーも作成してテーブルも用意しました。あとはACCESSのデータをORACLEの方にインポートしてあげればいいんですが、量が半端じゃないので出来ればSQL Plusでコマンド入力して一気にインポートしてしまいたいです。一応原始的に新規.MDBにリンクテーブルを作成し、元データから一つ一つ貼り付けしてもいいんですが、それでも時間がかかります。わかる方いらっしゃいますでしょうか???

  • 異なるDBのSQL

    SQLを始めたばかりの初心者です。 oo4oやADOを使用して、オラクルサーバーのデータをSELECT文で オラクル内の複数のテーブルを結合してListViewで表示する プログラムを作成中です。 オラクルサーバーにメインデーターがあり 各クライアントにMDB形式でマスタデータがあります。 MDBのマスタデータにはたとえばですが、テーブル名 [商品テーブル] フィールド名[コードナンバー]、[商品名]... となっており、サーバーには、テーブル名[商品コード]  フィールド名[コードナンバー]、[受注日]....があるとします。 クライアントからoo4oやADOを使用して、サーバーのデータを SELECT文でオラクル内の複数のテーブルを結合して ListViewで表示するのはできます。しかし [コードナンバー]は取得できるのですが、サーバーのテーブルには、 [商品名]がないためとうぜん表示できません。 この場合、オラクルから取得したデータをマスタデータのあるMDBに新しくテーブルを 作りそこに一度格納して再度ADOで結合処理して 商品名を表示する方法しか考えつかないのですが、 ほかに良い方法はありますでしょうか? ADOで接続MDBに保存再度ADOで接続して表示では レスポンスが悪いかなと思いまして... *VB6 winXP-pro オラクル9i

  • オラクルのSQLについて

    オラクルのSQLについて質問です。 開発環境はVB6.0です。 引継ぎをまかされたのですがオラクルは操作したことがないので困っています。 Set Ora = dbOra.CreateSql("begin EMPCRMI(:KA, :ROOM, :YMD, DATA1, :DATA2, :DATA3, :DATA4, :RET) ; end;", 0&) のEMPCRMIの部分が何なのかがわかりません>< 検索をかけてもVB構文ないで検索をかけてもヒットしません。 DATAの拡張を行うためにDATA5.DATA6と増やして実行したらエラーが起きました。 データベースのテーブルでは拡張領域は確保してあるので何が原因なのかわからないでいます、、、 お知恵をお貸しください。

  • ある条件のSELECT文の作成について

    以下のSQLの作成で悩んでいます。 【内容】 抽出元テーブルの中で、あるコードが同じデータは、 ある項目を全て同じ値にして取得したい。 (例) ■抽出元テーブル コード SEQ FLG  1    1   1  1    2    1    3    2    1   0  2    2  2    3  3    1   1 コードは同じ物が1つ又は複数あります。 コードが同じ物にはSEQで番号が連番されます。 FLGの項目がありますが、SEQ=1のデータしか設定されていません。 ■求めたい結果 コード SEQ FLG  1    1   1  1    2   1    1    3   1  2    1   0  2    2   0  2    3   0  3    1   1 全てのデータでFLGを求めて取得します。 取得の仕方はコードが同じでSEQ=1の値を取ります。 抽出元テーブルと結果のデータ件数は同じになります。 抽出元テーブルと結果の違いは、FLGに値が埋まっているかどうかの違いのみです。 このテーブルのFLGはUPDATEする事は出来ません。 別表なども利用しないで、 selectのSQL文だけで対応したいです。 どのような方法で対応できるでしょうか? オラクルのバージョンは10gです。 よろしくお願い致します。