• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:10営業日前の日付を取得したい(修正))

10営業日前の日付を取得する方法

このQ&Aのポイント
  • 各部署の10営業日前の日付を取得する方法を教えてください。
  • 特定の日付から10営業日前の日付を計算する方法について相談です。
  • ある休日テーブルを使って、各部署の10営業日前の日付を求める方法を教えてください。

質問者が選んだベストアンサー

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

あまり深く考えていませんので、件数が多いと使いものにならないかもしれません。 with 休日テーブル as ( select 'busyo1' 部署コード, date'2014-09-13' 休日 from dual union all select 'busyo1' 部署コード, date'2014-09-14' 休日 from dual union all select 'busyo1' 部署コード, date'2014-09-20' 休日 from dual union all select 'busyo1' 部署コード, date'2014-09-21' 休日 from dual union all select 'busyo1' 部署コード, date'2014-09-23' 休日 from dual union all select 'busyo2' 部署コード, date'2014-09-07' 休日 from dual union all select 'busyo2' 部署コード, date'2014-09-14' 休日 from dual union all select 'busyo2' 部署コード, date'2014-09-21' 休日 from dual union all select 'busyo3' 部署コード, date'2014-09-20' 休日 from dual ) , 日付 as ( select trunc(/* sysdate */ date'2014-09-24' - 1) - level 日付 from dual --とりあえず過去30日分の日付 connect by level <= 30) select 部署コード, 日付 from ( select 部署コード, 日付, count(*) over(partition by 部署コード order by 日付 desc) cnt from (select distinct 部署コード from 休日テーブル) 部署マスタ cross join 日付 where not exists ( select * from 休日テーブル where 部署マスタ.部署コード = 休日テーブル.部署コード and 日付.日付 = 休日テーブル.休日 ) ) where cnt = 10; こまかい説明を書く時間がないので、そこはSQLから読みとってください。すみません・・・

bennkyoutyuu1
質問者

お礼

いえいえ、SQLから自分で読み解くのは当たり前だと思っています。 教えていただけただけでも大変ありがたく感じております。 さすがにはじめて見る記述だらけで解読に手間取りましたが おかげさまで無事に一日を終えることができました。 ありがとうございました。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

元のデータは何件あるんですか? レコード数ではなくて、日付の数。 Excelにでもコピペして、Update文を作るほうが簡単かも。

bennkyoutyuu1
質問者

補足

元のデータの件数は過去20年分は入っているそうなので1部署あたり約2400件です。 (もう少し少ない部署もあります) ちなみに部署は約100種類あります。 アドバイス頂いた「Excelにコピペ」という意味がよくわからずに書いてしまいますが、このSQLは大規模なシステムの1部で使われます。 その画面の1つのそのまた1つの項目に使われるものなので、もしユーザ様にExcelを使わせるような想定をされているのならそれは無理なのです。 (少し寝たらひらめくかな、と期待しましたが朝になっても全くひらめきません。困りました。。)

関連するQ&A