- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2表を比較して新規データの作成について)
2表を比較して新規データの作成について
このQ&Aのポイント
- A表とB表を比較して、B表の終了日の翌日がA表の開始日に存在しない場合、A表にB表の終了日の翌日を開始日として新たにデータを追加する方法を知りたい。
- 追加される新規データの内容は、会社コード、社員コード、開始日、終了日、業務区分で構成される。
- また、追加後のデータの1つ前の日において、業務区分を0に更新する方法も教えてほしい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
update A表 set 業務区分=0 where ( 会社コード,社員コード,終了日 ) = ( select b.会社コード, b.社員コード, b.終了日 from B表 b where not exists ( select 1 from A表 a where a.会社コード=b.会社コード and a.社員コード=b.社員コード and a.開始日 = b.終了日 + 1 ) ); insert into A表 select b.会社コード, b.社員コード, b.終了日 + 1 開始日, to_date( to_char(b.終了日+1,'yyyy') || '1231', 'yyyymmdd') 終了日, b.業務区分 from B表 b where not exists ( select 1 from A表 a where a.会社コード=b.会社コード and a.社員コード=b.社員コード and a.開始日 = b.終了日 + 1 ) では?
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
回答No.1
■A表(新規追加) 会社コード 社員コード 開始日 終了日 業務区分 ------------------------------------------------------ 0001 0001 20090101 20091231 4 の終了日が「20091231」になるロジックが分かりません。
質問者
補足
nora1962さん すみません。 「20091231」は当年度の最終日になります。
お礼
nora1962さん ご回答有難うございます。 参考にさせて頂きます。