で重複を見つけます、電話と電子メール。 idはテーブルの各行に対して一意です。SQLは、私はトラブル次の要件のためのSQLクエリを書いを抱えている1列または他の列
電話番号またはの電子メール列を日付列に基づいて検索することで、重複レコードを見つける必要があります。 つまり、レコード内のまたはのメールが前回の日付に既に存在するかどうかを確認します。その場合は、重複としてマークしてください。
で重複を見つけます、電話と電子メール。 idはテーブルの各行に対して一意です。SQLは、私はトラブル次の要件のためのSQLクエリを書いを抱えている1列または他の列
電話番号またはの電子メール列を日付列に基づいて検索することで、重複レコードを見つける必要があります。 つまり、レコード内のまたはのメールが前回の日付に既に存在するかどうかを確認します。その場合は、重複としてマークしてください。
度Probこのような何か:あなたは、電話、電子メールや日付を越えたデータセットにdupesを持っている場合、これは非常にあなたを返す複数行になることがあり
select a.id, a.date, a.phone, a.email,
case when b.phone is not null or c.email is not null then 'Duplicate' else 'Unique' end as flag
from table a
left join table b on (a.phone = b.phone and a.date > b.date)
left join table c on (a.email = c.email and a.date > c.date)
を結合のサブ選択が必要な場合があります。オリジナル
上記
例えばleft join (select distinct phone, date from table) b on (a.phone = b.phone and a.date > b.date)
私はそれについていくつかのより多くを考えてきたし、電話やメールの以前のインスタンスがある場合は、参加の重複行を取得します。
これは、より良い動作するはず:
select a.id, a.date, a.phone, a.email,
case when a.phone is null and a.email is null then null
when sum(case when b.phone is not null or c.email is not null then 1 else 0 end) > 0 then 'Duplicate' else 'Unique' end as flag
from table a
left join table b on (a.phone = b.phone and a.date > b.date)
left join table c on (a.email = c.email and a.date > c.date)
group by a.id, a.date, a.phone, a.email
ねえ、これは完璧に動作します。ありがとう。電話機や電子メールのフィールド値が空でない場合、何をすればいいのか分かります...両方のフィールドがレコード内で空白の場合、フラグはNULLにする必要がありますが、いずれかのフィールドが使用可能な場合は、利用可能なフィールド。 –
調整を行いました。元のバージョンでは重複した行が作成されていたため、これも調整されました。基本的にif ... then else ... end文をif文として使用して構築することができます。 – BigTimeStats
素晴らしい!お手伝いありがとう –
をあなたはDUPとしてマークされているか、少し説明することはできますか? –
電話または電子メールが値を繰り返す場合、重複としてマークする必要があります。しかし、マーキングは日付に基づいて行う必要があります。重複する電話/電子メールを持つ最新のレコードは重複してマークする必要があります。私はこれが私の質問を説明することを願っています –
[DBMS](https://en.wikipedia.org/wiki/Database)はどちらを使っていますか? Postgres?オラクル? DB2?ファイアバード? –