Вопрос не слишком ясен, однако я предположил, что совпадение - это то, где имена находятся в обеих таблицах, и в одной таблице могут быть имена, которых нет в другой:
DDL
CREATE TABLE MyTab1
(
MyVAL NVARCHAR(20)
);
INSERT INTO MyTab1 VALUES ('Rick'),('Patrick'),('John'),('Jhon');
CREATE TABLE MyTab2
(
MyVAL NVARCHAR(20)
);
INSERT INTO MyTab2 VALUES ('Rick'),('Patrikc'),('Fred');
Запрос
DECLARE @TotalRecords DECIMAL= (
SELECT COUNT(*)
FROM (
SELECT b.MyVal AS Val1,
a.MyVAL AS Val2
FROM MyTab1 a
FULL JOIN Mytab2 b
ON a.MyVal = b.MyVal
) a
);
DECLARE @Matches DECIMAL = (
SELECT COUNT(*)
FROM (
SELECT b.MyVal AS Val1,
a.MyVAL AS Val2
FROM MyTab1 a
FULL JOIN Mytab2 b
ON a.MyVal = b.MyVal
) a
WHERE Val1 IS NOT NULL AND Val2 IS NOT NULL
);
SELECT (@Matches / @TotalRecords) * 100
В этом примере возвращаемое значение составляет 16,6%, поскольку вдве таблицы, из которых 1 является общей для двух - (1/6) * 100 = 16,6