Результат больше похож на количество дублирующихся записей, а не на количество пар, потому что по количеству пар результат будет такой:
столбец1 столбец2 результат
фф 123 1
фф 456 0
йцу 123 0
так как все же не понятно что вам необходимо, вот несколько вариантов:
-- количество дублирующихся записей
SELECT столбец1, столбец2, count(*)
FROM таблица
GROUP BY столбец1, столбец2;
-- количество ПАР!!
SELECT столбец1, столбец2, count(*) div 2
FROM таблица
GROUP BY столбец1, столбец2;
-- если необходимо именно как в вопросе (количество дублирующихся записей):
SELECT t1.столбец1, t1.столбец2, cnt AS результат
FROM таблица t1
JOIN (
SELECT столбец1, столбец2, count(*) cnt
FROM таблица
GROUP BY столбец1, столбец2) t2 ON t2.столбец1 = t1.столбец1
AND t2.столбец2 = t1.столбец2
;
-- если необходимо именно как в вопросе (КОЛИЧЕСТВО ПАР!!):
SELECT t1.столбец1, t1.столбец2, cnt div 2 AS результат
FROM таблица t1
JOIN (
SELECT столбец1, столбец2, count(*) cnt
FROM таблица
GROUP BY столбец1, столбец2) t2 ON t2.столбец1 = t1.столбец1
AND t2.столбец2 = t1.столбец2
;
см. пример на
dbfiddle
PS: т.к. вы не указали СУБД, пример написан для MySQL 8
для SQL Server
div надо заменить на обычный оператор
/
для Oracle
count(*) div 2 надо заменить на
CEIL(count(*) / 2)
и должно работать.