尝试查找两列之间匹配的字符百分比。
表A
ID Name
1 RICK
2 PATRICK
3 MARK.HI
表B
ID Name
1 RICK
2 PATRCIK
3 MARK-HI
当我同时连接两个表(A和B)时,如果“名称”列匹配 (表A中的“ RICK” =表B中的“ RICK”),则新的百分比列应显示为100%。
如果我同时连接两个表时“名称”列不匹配 (表A中的“ PATRICK” <>表B中的“ PATRCIK”),它应大致显示该列不匹配的百分比。
我正试图找出混乱的数据。
答案 0 :(得分:0)
这个问题不是很清楚,但是我已经假设匹配是两个表中的名称都在其中,并且其中一个表中的名称可以不在另一个表中。
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%,因为两个表中有6个唯一值,其中两个表中的1个是相同的-(1/6)* 100 = 16.6