• 締切済み

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

みんなの回答

  • 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