• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2表を比較して新規データの作成について)

2表を比較して新規データの作成について

このQ&Aのポイント
  • A表とB表を比較して、B表の終了日の翌日がA表の開始日に存在しない場合、A表にB表の終了日の翌日を開始日として新たにデータを追加する方法を知りたい。
  • 追加される新規データの内容は、会社コード、社員コード、開始日、終了日、業務区分で構成される。
  • また、追加後のデータの1つ前の日において、業務区分を0に更新する方法も教えてほしい。

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.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 ) では?

noname#90757
質問者

お礼

nora1962さん ご回答有難うございます。 参考にさせて頂きます。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

■A表(新規追加) 会社コード 社員コード 開始日  終了日  業務区分 ------------------------------------------------------ 0001    0001    20090101 20091231 4 の終了日が「20091231」になるロジックが分かりません。

noname#90757
質問者

補足

nora1962さん すみません。 「20091231」は当年度の最終日になります。

関連するQ&A