変更情報のみのレコードを、同じテーブルの有効な最新値で更新したい

前提

CSVで公開されているデータをSQLiteでデータベース化を行っています。
CSVは基本となる全データとそれからの差分データが公開されており、それを結合して変更履歴付のテーブルを作成しようとしています。
CSVの仕様はあるのですが、一部仕様と異なる形式で公開されており具体的には次のように変更箇所のみ値が入力されています。

基本データ例(実際は35カラム)

ID 商品種別 商品名 単価 変更日
1 1 ガム 80 2022/04/01
2 1 チョコ 100 2022/04/01
3 2 アイス 120 2022/04/01

変更データ例1(全170ファイル)

ID 商品種別 商品名 単価 変更日
2 120 2022/06/01
3 アイスクリーム   2022/06/01

変更データ例2

ID 商品種別 商品名 単価 変更日
3 150 2022/08/01
4 3 お茶 120 2022/08/01

実現したいこと

CSVを読み込んで次のようにテーブル化まで行いました。

結合結果

ID 商品種別 商品名 単価 変更日
1 1 ガム 80 2022/04/01
2 1 チョコ 100 2022/04/01
2 NULL NULL 120 2022/06/01
3 2 アイス 120 2022/04/01
3 NULL アイスクリーム NULL 2022/06/01
3 NULL NULL 180 2022/08/01
4 3 お茶 120 2022/08/01

これをSQLを使用してそれぞれの値がNULLであった場合、最終の有効な値を引き継ぐように更新処理をすることは可能でしょうか。
結合後ではなく変更データを一度テーブルにしてINSERTする際にNULLであれば基本データから値を取得するほうが良いのでしょうか。

ID 商品種別 商品名 単価 変更日
1 1 ガム 80 2022/04/01
2 1 チョコ 100 2022/04/01
2 1 チョコ 120 2022/06/01
3 2 アイス 120 2022/04/01
3 2 アイスクリーム 120 2022/06/01
3 2 アイスクリーム 180 2022/08/01
4 3 お茶 120 2022/08/01

よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

SQLite Version 3.27.2

コメントを投稿

0 コメント