
オラクル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
A 回答 (1件)
- 最新から表示
- 回答順に表示
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のバージョンまで明記されるといいですよ。
バージョンによって使用できる関数などが違ってきますので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
oracleの分割delete
-
SQL GROUPで件数の一番多いレコ...
-
SET句内で複数の条件を指定して...
-
select句副問い合わせ 値の個...
-
unionでマージした副問合せを結合
-
MERGE文を単体テーブルに対して...
-
テーブルの列名をデータとして...
-
OraclのSQL文について(No2)
-
Accessで日付が変わると番号が...
-
ADO VBA 実行時エラー3021
-
Oracleでの文字列連結サイズの上限
-
OracleのSQL*PLUSで、デー...
-
ACCESSの集計クエリで3件ある...
-
ACCESSで大量の更新を行うと「...
-
ADOでエクセルからアクセス...
-
PHP+MySQL
-
Excelで、改行がある場合の条件...
-
キーが同じを複数行を1行にま...
-
Accessで別テーブルの値をフォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
外部結合とor条件混在の記述方法
-
MERGE文を単体テーブルに対して...
-
SQL GROUPで件数の一番多いレコ...
-
SELECTの結果で同一行を複数回...
-
oracleの分割delete
-
集計後の数値が倍になる
-
固定値を含む結合と複数テーブ...
-
SET句内で複数の条件を指定して...
-
unionでマージした副問合せを結合
-
COUNTの取得方法(?)について...
-
Access 2つのテーブルで数量...
-
他のテーブルを参照した値はupd...
-
SQLの書き方(チェックボックス)
-
SQLで複数の条件がある場合
-
複数テーブルのMAX値の行データ...
-
半角英数字混在データから数字...
-
結合と副問い合わせの違い
おすすめ情報