我有一张如下所示的桌子
唯一_id | 名字 | 姓氏 | 姓氏 |
---|---|---|---|
1 | 约翰 | 史密斯 | M |
2 | 凯文 | 琼斯 | M |
3 | 凯文 | 琼斯 | F |
在此示例中,unique_ids #2 和 #3 的记录是同一个人,但性别不同。 我想确定此类记录的数量。在本例中,输出为 1,因为该表有一个人的重复项。 TIA 的任何指示。
您可以按名字和姓氏进行分组,然后使用 HAVING 子句仅保留具有多个结果的组合。我喜欢使用如下所示的通用表表达式,因为您可以轻松输出基础行以进行故障排除。
DECLARE @tbl TABLE(
unique_id int,
first_name varchar(20),
last_name varchar(20),
gender char(1)
)
INSERT @tbl(unique_id, first_name, last_name, gender)
VALUES
(1, 'john', 'smith', 'M'),
(2, 'kevin', 'jones', 'M'),
(3, 'kevin', 'jones', 'F')
;WITH cteDupes AS (
SELECT
first_name, last_name
FROM
@tbl
GROUP BY
first_name, last_name
HAVING COUNT(*) > 1
)
-- To see the actual names with dupes
-- SELECT * FROM cteDupes
-- To see the count only
SELECT COUNT(*) FROM cteDupes