前提
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 コメント