- 締切済み
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
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yamada_g
- ベストアンサー率68% (258/374)
こんな感じでしょうか。 --全角でインデントしています 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のバージョンまで明記されるといいですよ。 バージョンによって使用できる関数などが違ってきますので。
お礼
ありがとうございます!! 説明付きでとても理解し易かったです。