HAVINGクエリによる重複データの抽出についてです。
特定のデータが2件以上存在するデータの抽出はレポートのサマリレポートでレコード順で並び替える方法で対応するこことができたのでよく使ってました。
関係無いデータも表示されますが一旦必要なデータが上の方に集まります。
重複判定に使いたいキーワードを持つ項目をサマリ項目に指定してレコード件数の多い順に並び替えることで重複データの有無をチェックしていたのですが組織に登録されたレコード件数自体が多くなると並び替え時にエラーとなり、この方法での重複データの確認はできなくなりました。
別の抽出方法を探していたところ、Trailblazer CommunityでHAVINGクエリをつかった方法が紹介されているのを見つけたので試したところ無事に必要なデータの抽出がうまくいきました。
同じ取引先IDを持つ商談が2件以上存在しているデータの抽出するときのサンプルです。(※取引先と商談の場合は実際は積み上げ集計で取得可能ですが正しく取得できていることをわかりやすいのでこの条件で試しています。)
まず取引先と商談件数の登録状況です。
同じ取引先IDを持つ商談の件数の取得までならGROUP BYクエリで対応できます。(WHEREもORDER BYも使えます。)
SELECT AccountId,Account.Name,COUNT(Id) FROM Opportunity WHERE AccountId != null GROUP BY AccountId,Account.Name ORDER BY COUNT(Id) DESC
上記のクエリにHAVINGクエリを追加することで2件以上存在するデータという形で絞り込みできます。
→ HAVING COUNT(Id) > 1
SELECT AccountId,Account.Name,COUNT(Id) FROM Opportunity WHERE AccountId != null GROUP BY AccountId,Account.Name HAVING COUNT(Id) > 1 ORDER BY COUNT(Id) DESC
開発者コンソールでの実行となりますので管理者向けの確認方法となりますがこんな感じで特定の条件に一致するデータが2件以上のデータを抽出することができます。サンプルでは取引先IDとしていますが重複判定の項目に差し替えれば重複データの抽出が可能です。