Oracleでストアドパッケージを作っています。
key1 key2 key3 sdate edate
1 1 1 2012/07/12 2012/09/11
2 2 2 2012/06/01 2012/07/31
こんなデータがあった時、以下のように日付の範囲を展開した
レコード群を得たいのですが、やり方が思いつきません。
key1 key2 key3 date
1 1 1 2012/07/01
1 1 1 2012/08/01
1 1 1 2012/09/01
2 2 2 2012/06/01
2 2 2 2012/07/01
事情により、Typeは使えません。
展開後、別途SQLで利用するつもりです。
ストアド内だけで実装可能でしょうか?
No.2ベストアンサー
- 回答日時:
Oracleのバージョンが書いていないのですが、10g以降であればmodel句を使って、こんな感じでどうでしょうか。
SDATE、EDATEのデータ型が不明なのでDate型と言う前提です。
--この部分はテーブルを作るのが面倒なので疑似データを用意しているだけです
with tableA as (
select 1 KEY1, 1 KEY2, 1 KEY3, date '2012-07-12' SDATE, date '2012-09-11' EDATE from DUAL
union all select 2 KEY1, 2 KEY2, 2 KEY3, date '2012-06-01' SDATE, date '2012-07-31' EDATE from DUAL
)
--実際のSQLはここから
select key1,key2,key3,to_char(dt, 'yyyy/mm/dd') dt
from tableA
model
partition by (KEY1,KEY2,KEY3)
dimension by (0 as IND)
measures(trunc(SDATE, 'mm') as DT, months_between(trunc(EDATE,'mm'), trunc(SDATE,'mm')) as TERM)
rules(DT[for IND from 0 to TERM[0] increment 1] = add_months(DT[0], cv(IND)));
ありがとうございます。
試して見たところ、思うようなことができそうでした。
ちょっと意味がわからないので、調べながら応用きかせつつ実装してみようかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript SQLでデータベースから返ったデータのJSON形式生成について 1 2022/04/06 12:25
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- JavaScript Json のキーと値の出力の違いについて 2 2022/06/14 20:22
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- CPU・メモリ・マザーボード USB Key 2 2022/07/06 14:25
- MySQL MYSQL エラー 2 2022/10/18 11:37
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL*PLUSでの分秒までの表示の仕方
-
SQL*Loaderでのsysdate使用
-
to_date使用時に発生するエラー...
-
DB2でのシステム日付のinsert、...
-
SQLです。下記の問合せを行うク...
-
SQLエラーについて
-
CSVファイルのエクスポート項目...
-
Access VBAで行ラベルが定義さ...
-
VBA プロシージャの名前の取得
-
エクセルVBAでUserFormを起動し...
-
エクセル 日付による並べ替え...
-
SSIS 変数の値をSQL実行タスク...
-
ACCESS2007インポート時の空白...
-
Oracle 10gで順序sequenceの作...
-
sqlplusのspoolで空白行出現
-
Excel:ThisWorkbookオブジェク...
-
Accessのマクロでモジュールを...
-
テーブルの主キーをdate型...
-
【Excel VBA】 WorksheetやRa...
-
別のスキーマのテーブルアップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL*Loaderでのsysdate使用
-
SQL*PLUSでの分秒までの表示の仕方
-
日付型カラムへのデータINSERT
-
to_date使用時に発生するエラー...
-
DB2でのシステム日付のinsert、...
-
SQL*Loader フォーマット変換...
-
date型のインデックス
-
EXCELでの時間計算(休憩時間の...
-
エクセル上の 2017/10/27 7:01...
-
ALTER SESSIONについて
-
SQL Server で 翌月10日を取...
-
日付の範囲検索がしたい
-
(日付 - 日付)/数値
-
SQLエラーについて
-
日付範囲を展開したレコードを...
-
DB2のTimestamp型
-
literal does not match format...
-
SQL Sever での日付の差の求め...
-
実行エラー 3075:クエリ式`作...
-
Oracle to_dateのyyyy/mm/dd
おすすめ情報