SQLで教えてください。
次のようなリストがあります。
データ取得 | 社員番号 | 名前 | 所属部署 | 役職 | 営業所名 |
20201201 | 3xxx001 | SQL太郎 | 営業部 | 課長 | 東京 |
データ数2000件ほどのリストを毎日DLして新しいtableに入れていきます。「データ取得」のフィールドにはDLした日付が入ります。基本的にはデータ取得の日時だけがアップデートされていきますが、その他のデータに修正が入ることあります。どこにどのような修正が入ったかを取り出すSQLを作りたいです。
試したこと
データ取得の列以外で重複行を取りだして、重複していない行を比較するようにするのかと考えてみましたが、よくわかりませんでした。
補足情報(FW/ツールのバージョンなど)
SQLITE3
20201230 追記
期待する出力は、前日にinsertした内容と比較して、日付以外で変更があれば、そのその変更前の行と変更後の行を取り出すことができればと考えています。
insertされたリスト
データ取得 | 社員番号 | 名前 | 所属部署 | 役職 | 営業所名 |
---|---|---|---|---|---|
20201201 | 3xxx001 | SQL太郎 | 営業部 | 課長 | 東京 |
20201201 | 3xxx001 | SQL次郎 | 営業部 | 課長 | 東京 |
20201201 | 3xxx001 | SQL三郎 | 営業部 | 課長 | 東京 |
次の日にinsertされた結果
データ取得 | 社員番号 | 名前 | 所属部署 | 役職 | 営業所名 |
---|---|---|---|---|---|
20201201 | 3xxx001 | SQL太郎 | 営業部 | 課長 | 東京 |
20201201 | 3xxx001 | SQL次郎 | 営業部 | 課長 | 東京 |
20201201 | 3xxx001 | SQL三郎 | 営業部 | 課長 | 東京 |
20201202 | 3xxx001 | SQL太郎 | 営業部 | 課長 | 東京 |
20201202 | 3xxx001 | SQL次郎 | 営業部 | 課長 | 神奈川 |
20201202 | 3xxx001 | SQL三郎 | 営業部 | 課長 | 東京 |
取り出したい修正箇所が分かるリスト
データ取得 | 社員番号 | 名前 | 所属部署 | 役職 | 営業所名 |
---|---|---|---|---|---|
20201201 | 3xxx001 | SQL次郎 | 営業部 | 課長 | 東京 |
20201202 | 3xxx001 | SQL次郎 | 営業部 | 課長 | 神奈川 |
このDBの大元は別にあり、毎日その日の最新情報がCSVで送られてくるのを別にDBを作り、そこに毎日データを積み上げていっています。前日送られてきたデータに修正が無ければ全く同じなのですが、修正が入ったとき、それがどこに修正入ったかを知りたいためこのようなことを行っています。大元のDBにアクセスできないがための状況です。
同一日付、同一人物で、複数件のデータがDLされるんですか?
→同じ日付であれば同一人物のデータは1件となります。
20201202:神奈川は、どこから発生したのですか?
→大元のDBに修正が入ったため、次の日に送られてくるデータが修正されています。
比較対象データは、社員番号がキーですか?
→社員番号がキーとなります。
比較対象は、常に、前日のデータですか?
→常に毎日送られてくるわけでもないので、前日のデータとはならないこともあります。ただ、一個前に送られてきたデータです。
前日のデータがない場合は、あり得ますか?
→あり得ます。
前日のデータがなく、それ以前のデータが存在することはありますか?
→データが積みあがっていくため、以前のデータはあります。同一人物に修正が入ってきた履歴をあとからたどる必要もあり、古いデータも残してあります。
以上です。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー