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

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

10営業日前の日付を取得したい(修正)

※連投すみません。削除も修正もできなかったので連投になってしまいました。 一番重要な説明をコピペミスしてしまいました。 明日になれば削除できるようなので古い方は明日削除致しますm(__)m ---ここから--- 今日は9/24という想定で各部署の10営業日前の日付を取得したいのですが良い方法が思いつきません。 (ここ↓を参考にしたらできそうな気がしましたが私の頭では無理でした。。。) http://okwave.jp/qa/q6677209.html 【休日テーブル】 部署コード, 休日 ----------------- busyo1,   9/13 busyo1,   9/14 busyo1,   9/20 busyo1,   9/21 busyo1,   9/23 busyo2,   9/7 busyo2,   9/14 busyo2,   9/21 busyo3,   9/20 【結果】(各部署の10営業日前の日付) 部署コード, 日付 ----------------- busyo1,   9/9 busyo2,   9/12 busyo3,   9/13 このような「発想の転換」が必要な感じのSQLが本当に苦手です。 全然思いつかずに今日も半日を浪費してしまいました。 何かコツのようなものがあるのでしょうか。 お礼は明日の夜になってしまいますが何卒よろしくお願いします。

  • Oracle
  • 回答数2
  • ありがとう数12

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

  • ベストアンサー
  • 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

  • ある日付から営業日をひいた日付の計算

    どなたか、任意の日付xから、n営業日前の日付yを簡単に求めるスクリプトご存知じゃないですか? モジュールでも結構です。 Time:Localもつかって結構です。 休日は土・日で、祭日は無視して結構です。 アルゴリズムだけでも結構です。 金曜日から5営業日前だったら金曜ですが、3営業日前だと火曜日ですよね。 また数十日前となると、7で割って、それに2掛けて日数を足してそれを金曜日の日付からひいて。。。。と悩んでると、片頭痛が再発しそうです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 数日前等の日付を表示したいのです。

    HP(個人使用のサンプル的なもの)を作っているのですが、トップにニュース記事を載せたいのです。 これは、更新はしないつもりですが、HPを見た人があたかも更新したかのように思えるように、数日前の日付や数ヶ月前の日付などを表示させたいのです。 例えば、今日が2008年10月18日ですので ○○を更新(2008.10.12) ○○に○○を追加(2008.10.04) ○○を削除(2008.09.28) ↑のように日付を入れたいのです。 何か良い方法はありますでしょうか? お願いします。

  • PHPで明日の日付と明日の曜日を取得したい

    <td align="center"><?php date_default_timezone_set('Asia/Tokyo'); $week2 = array( 'Mon'=>'月', 'Tue'=>'火', 'Wed'=>'水', 'Thu'=>'木', 'Fri'=>'金', 'Sat'=>'土', 'Sun'=>'日' ); $w = $week2[date('D')]; echo date("j日") . "($w)"; ?></td> 上記のコードで今日の日付と曜日が取得出来るのですが、明日の日付と明日の曜日を取得するのはどうすれば良いのでしょうか。

  • Access 日付(可変)抽出

    こんにちは。 Access2010、コンボボックスによる日付抽出で困っています。 全くの素人な者で、同じ様な質問で自分のケースに該当するものが見つけられなかったので新規に立てさせて頂きました。 よろしくお願い致します。 タスクの迫って来ているデータを抽出しようと、明日から5日間という期間を指定して抽出しようとしています。 Access2010標準の日付のフィルターウィザード?で日付をばっちり2015/06/08~2015/06/13などと設定してやれば絞り込めるのですが、このコードの日付の部分を 「">=" & Date + 1 ~/省略/~ "<=" & Date + 5」 としても同じ様に動作しません。 同じ様な事で悩んでいる質問はいくつか見つけたのですが、それらの方はコードが難しくてよく解りませんでした。 私のコードは「マクロの登録」で自分の作業を覚えさせた2行だけの簡単なコードです。 会社で作っているもので、自宅にはAccessがありませんのでコードをここに書くのが難しいのですが、フィルタの▼ボタンを押してでてくる今日、昨日、先週、、、などと出ている内の一番下にある日付を自分で設定するフィルタの掛け方です。 画面が目の前にないので説明も解りにくいかと思いますが、よろしくお願いします(><)

  • 日付に関するSQL分で

    wonddows2000,Access2000 VBAで勤怠管理をしたいのですが日付に関するSQL分でDATEDIFFの使い方が今ひとつわかりません。 SELECT * ,DATEDIFF(day,入室日,退室日)  FROM TABLE WHERE 部署コード=700  WHERE後部分はどう表現したらいいでしょうか。 検査条件(1) 入室日(YYYY/MM/DD)=退室日(YYYY/MM/DD) 且つ入室時間(hh:mm:ss)が09:00:00より後且つ 入室日(YYYY/MM/DD)=退室日(YYYY/MM/DD)+1 且つ退室時間(hh:mm:ss)が09:00:00より前且つ 部署コードが700に対応するテーブルの全データを出力 検査条件(2)上記以外の全データ TABLE (文字型)  (文字型) (日付型) (日付型) (日付型) (日付型) 部署コード | 氏名  | 入室日  |入室時間 | 退室日  | 退室時間 | 1000 A 2000/12/01 8:16:30 2000/12/01 18:10:20 2000 B 2000/12/02 8:16:30 2000/12/03 8:10:20 700 C 2000/12/03 9:16:30 2000/12/03 18:10:20 3000 A 2000/12/04 8:16:30 2000/12/01 18:10:20 700 D 2000/12/04 8:16:30 2000/12/05 8:10:20 700 E 2000/12/04 8:16:30 2000/12/04 18:10:20 結果(1) 700 C 2000/12/03 9:16:30 2000/12/03 18:10:20 700 D 2000/12/04 8:16:30 2000/12/05 8:10:20 結果(2) 1000 A 2000/12/01 8:16:30 2000/12/01 18:10:20 2000 B 2000/12/02 8:16:30 2000/12/03 8:10:20 3000 A 2000/12/04 8:16:30 2000/12/01 18:10:20 700 E 2000/12/04 8:16:30 2000/12/04 18:10:20

  • 文章内の指定した文字より前にある文を全削除したい

    ・メモ帳などの文章内で、指定した文字より前にある(上にある)文章を全削除。または指定した文字より後にある(下にある文章を全削除)が可能になるソフトがあれば教えてください。 これをフォルダ内にある複数のファイルに対して一括で処理したいです。 視覚的にイメージすると以下のようなことです。 ------------------------------------------------ :メモ帳ファイル(1) の本文 今日は買い物をした。とても疲れたが楽しかった。 休日だったので人がとても多かった。 明日のスケジュールは朝の7時に起きて、学校に向かう。 ------------------------------------------------- ------------------------------------------------ :メモ帳ファイル(2) の本文 雪が降っていたのですごく寒かった。 もうすぐ3月なのにまだまだ寒い。 明日の予定は、12時に新宿で待ち合わせだ。 ------------------------------------------------- 例えば「明日の」という文字より上の文章はすべて削除というルールを与えるとします。 ファイル(1)は、「今日は~」から「多かった」までの文章が削除で、ファイル(2)は「雪が~」から「寒い。」まで削除という形です。 すべてのファイルに「明日の」という語句は入っているので、それを指定して、それより前にある言葉はすべて削除にするという設定で処理を行いたいです。もしくは、指定した語句より後にある語句もすべて削除という設定もできれば助かります。 よろしくお願いします。

  • 登園前の薬

    年少の娘です。 数日前から咳と鼻水があり、咳が酷くなったので、今日は幼稚園を休ませて小児科に行きました。 熱も出てないし元気なので、あした幼稚園に行かせたいのですが、薬をどうするか悩んでいます。 ペリアクチンという薬を飲むと以前、半日くらい寝たので、今回の薬にも入ってたのですが…、量を減らして処方してもらいました。 それでも昼食後に薬を飲ませたら、30~40分くらいで遊びながら寝てしまいました。 明日は幼稚園に行かせたいのですが、これだけ睡魔がくると、幼稚園で困りそうです。 それでもやはり1日3回飲ませるべきでしょうか? こういう場合、朝の薬は皆さんどうしてますか?

  • メールの日付が過去や未来になっています

    英文のアダルトメール、広告メール、意味不明なスペルの迷惑メールが2ヵ月程前から来るようになり、ここ一ヵ月は週に100件程度来ます。大抵は迷惑メールフォルダーに振り分けられますので一括削除しています。手間はかかりませんが、気分的にうっとうしく思います。過去ログを見てもこのようなメールで気分を害されている方は沢山いらっしゃると思います。ただメールの受信の日付が明日になっていたり一週間後とか、来年の日付、去年の日付のものもありました。これってどう言う事なのでしょうか。またこれらのメールは海外から送られて来ているものなのでしょうか。英語のわからない日本人に届く確率がかなり高いのに、このようなメールを送付してくるのはどのような目的があるのでしょうか?仮にむやみやたりにクリックすれば重大な被害に遭う可能性があるのでしょうか。どうか宜しくお願い致します。

  • 勤務できる日付を改めたい!

    先ほど、転職したい会社の面接を受けてきました。 どうしても入社したい会社です。 相手側の反応はまずまず良かったのですが、勤務開始できる日付が気になっていたようです。 就業規則では50日前の申し出となっているので、少し余裕をみて10月から入社できるといいました。 ただ、今の会社は、皆1ヶ月前の申告で辞めていきます。 採用がきまったわけではないので退職の話はしていなかったのですが、近いうちには必ずやめようと思っていたので今日明日にでも申告すれば 遅くても9月の頭には退職できると思います。 もう少し早くこれる人が欲しいと言われていたので、お礼状にその旨を説明して本日中に送りたいと思っています。 若干賭けではありますが、少しでも有利にしたいのです!! その際ですが、一度申し上げたことを覆してしまっては信用がかけてしまうでしょうか? そしてどのような礼状を作成すれば自然でしょうか? 教えてください。

  • 異動前の部署で追い詰められてます。

    来月からテストエンジニア部署に異動するのですが、異動前の部署からプレッシャーをかけられています。 システム化する業務の要件整理となります。 「終わらなかったら責任をとってもらう。異動後の部署に仕事を持っていってもらうよう話を通す」といったことを言われています。 「残業はしているが、残業以外はやる気はないのか?土日出勤の許可をもらいましょうか?」などと言われ、休み無しでやるようにも促されています。 今日明日については、一応PCは家に持ってきましたが会社にいくつもりはないです。 一方で「こちらから諦めて良いですとはいいません。また逃げることを覚えるからです。無理なら貴方の口から、先輩が教えてくれないからという他人任せな理由ではなく自分に能力がないからという理由でギブアップしてください」 などとも言われています。 ここは素直にギブアップした方が良いでしょうか。 「異動後の部署からの作業も出るとのことですし、異動前の作業引き継ぎもしっかり行いたいので、システム化する業務の要件整理は諦めさせていただけないでしょうか。 といった形で。 そうしたらしたで、何を言われるかわかりません。 「じゃあ異動後の部署でも、こちらの対応が完了するまで暫定的な対応を継続して、残業してでもやってもらう」 などと言われるかもしれません。 対応についてアドバイスをお願いします。