私は、43列のユーザー情報(名、姓、住所、市区町村、州、郵便番号、電話番号、メールアドレス、訪問日、lastActiveなど)ユーザー情報ビット付き履歴SQLテーブル - 1エントリおよびすべての情報で新しいテーブルを作成
毎晩、私はその日に訪問した顧客からのフィードをクライアントから入手しています。これらの訪問は、古いレコードを削除せずにcustomersテーブルに格納されます。古いレコードはlastActive = 0とマークされ、新しいレコードはlastActive = 1とマークされます。nullフィールドはすべて「不明」として格納されます。
明らかに、これはクエリに時間がかかる非常に大きなテーブルになります。だから、私は別のユーザーとその最も完全な情報だけである新しいテーブルを作ることを計画しています。
例:ボブ・スミスが1月1日に電話または電子メールなしでインポートされ、電話で8月1日に再びインポートされたが、電子メールなしで9月1日に電話なしで再びインポートされた
CustImportID CustomerKey FirstName LastName Phone Email visitDate lastActive
1 1 Bob Smith Unknown Unknown 2016-01-01 0
2 1 Bob Smith 5551231234 Unknown 2016-08-01 0
3 1 Bob Smith Unknown [email protected] 2016-09-01 1
だから私の質問はこれです、顧客テーブルからの異なる人々を取得するための最良の方法は何だ、とどこボブは唯一の希望、新しいテーブルにそれらを挿入します。電子メール、私の顧客のテーブルには、次のようになります1つのエントリーになりますが、私はすべてのフィールドの値を持っています(すべてのエントリーが電話を持っている場合、たとえば、最新のエントリーから電話を引き出す場合)、
CustomerKey FirstName LastName Phone Email visitDate
1 Bob Smith 5551231234 [email protected] 2016-09-01
私はそれを行うと考えることができる唯一の方法は、それを行う最良の方法ではない明らかに43のサブクエリを含むクエリを持つことです。私は良い方法がなければならないことを知っていますが、私はそれを考えることができません。 – Brds