テーブルAにはstorecode deadlinflg
テーブルBにはstorecode month、monthdeadline
上記のカラムをそれぞれ持っています
やりたいことは
storecodeで紐づけて
テーブルAのwhere句が'1'だったら、テーブルBのmonthを見て1か月後の日付をmonthdeadlineに入れる
、'2'だったら、2か月後の日付にUPDATEしたいです。
例)①:deadlinflg:1 month'2018-02-28’ だったら monthdeadline:'2018-03-31’
②:deadlinflg:2 month'2018-01-15’ だったら monthdeadline:'2018-03-15’
③:deadlinflg:2 month'2018-02-28’ だったら monthdeadline:'2018-04-30’
month、monthdeadline 日付の形式は'YYYY-MM-DD'です。
以下クエリ
update tb set monthdeadline=month + (ta.deadlingflg || ' months')::interval
from ta
where ta.storecode=tb.storecode
困ったこと
上記だと
deadlinflg:2 month'2018-01-15’ だったら monthdeadline:'2018-03-15’ OK
①:deadlinflg:1 month'2018-06-30’ だったら monthdeadline:'2018-07-30’ NG
②:deadlinflg:2 month'2018-02-28’ だったら monthdeadline:'2018-04-28’ NG
③:deadlinflg:2 month'2018-11-30’ だったら monthdeadline:'2018-01-30’ NG
①、②、③だと月末日が入らず「1か月後」の日にちが入ってしまいます。
単純に「deadlinflg:2 month'2018-02-28’ だったら monthdeadline:'2018-04-28’」だったら
::interval + '2 days'とかにすれば埋まりますがそれだと
他の日付に影響してしまいます・・
また、month の中身は中締めの「15日」と月末締めの「月末日」が入っているので
どうすれば、中締め日に影響せず月末日を入れることが出来ますか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。