Хорошо. Давайте начнем с одного простого примера:
create table #test
(a int, b int, c int, d int, e int)
insert into #test values (1,2,3,4,5)
insert into #test values (1,2,3,4,5)
insert into #test values (1,2,3,4,5)
insert into #test values (1,2,3,4,5)
insert into #test values (1,2,3,4,5)
insert into #test values (5,4,3,2,1)
insert into #test values (5,4,3,2,1)
insert into #test values (1,1,1,1,1)
И попробуйте свой подзапрос, чтобы понять, что вы получите:
SELECT
a, b, c, d, e,
COUNT(*)
FROM
#test
GROUP BY
a, b, c, d, e
HAVING
COUNT(*) > 1
Подумай немного ...
Данг Данг Данг Данг ~
a b c d e (No column name)
1 2 3 4 5 5
5 4 3 2 1 2
Он вернет только две строки, потому что вы использовали 'group by'. Но он по-прежнему считал повторяющиеся числа для каждой комбинации a, b, c, d, e.
Если вы хотите общее количество дубликатов, попробуйте это:
select sum(sub_count) from (
SELECT
a, b, c, d, e,
COUNT(*) - 1 as sub_count
FROM
#test
GROUP BY
a, b, c, d, e
HAVING
COUNT(*) > 1)a
В этом случае вам нужно поставить минус один, если я правильно понимаю ваши исходные запросы. Поправь меня, если я ошибаюсь.