Для проверки дублей в Terrasoft CRM используется запрос вида
SELECT
"tbl_Contact1"."Name" "Name",
"tbl_Contact1"."Communication1" "Communication1",
COUNT("tbl_Contact1"."ID") "Duplicates"
FROM
"tbl_Contact" "tbl_Contact1"
WHERE (
(SELECT
COUNT("tbl_Contact2"."ID") "Duplicates"
FROM
"tbl_Contact" "tbl_Contact2"
WHERE (UPPER("tbl_Contact1"."Name") = UPPER("tbl_Contact2"."Name") AND
UPPER("tbl_Contact1"."Communication1") = UPPER("tbl_Contact2"."Communication1"))) >= 2 AND
NOT UPPER("tbl_Contact1"."Name") IS NULL AND
NOT UPPER("tbl_Contact1"."Communication1") IS NULL)
GROUP BY
"tbl_Contact1"."Name",
"tbl_Contact1"."Communication1"
ORDER BY
3 DESC,
1 ASC,
2 ASC
Однако, если необходимо найти также записи в которых одно из полей может быть NULL, в нашем случае, например, Средство связи 1, такой запрос эти записи не найдет.
Для этого лучше пользоваться запросом с HAVING
SELECT
"tbl_Contact1"."Name" "Name",
"tbl_Contact1"."Communication1" "Communication1",
COUNT(*) "Duplicates"
FROM
"tbl_Contact" "tbl_Contact1"
GROUP BY
"tbl_Contact1"."Name",
"tbl_Contact1"."Communication1"
HAVING COUNT(*) >=2
ORDER BY
3 DESC,
1 ASC,
2 AS
Кроме того, что этот запрос выглядит значительно элегантнее, по моим оценкам на MS SQL Server он еще и выполняется значительно быстрее. На Oracle время выполнения примерно одинаковое.