问题:计数在SQL条件匹配
找到匹配的记录在Person表,其中姓氏和名字是相同的,或者,在SSN是相同的数量。
GIVENS
表结构:人
FirstName
LastName
SSN
RecordId
DATA:在Person表
╔═══════════╦══════════╦═════════════╦══════════╗
║ FIRSTNAME ║ LASTNAME ║ SSN ║ RECORDID ║
╠═══════════╬══════════╬═════════════╬══════════╣
║ Bob ║ Smith ║ 111-11-1111 ║ 1 ║
║ Robert ║ Smyth ║ 111-11-1111 ║ 2 ║
║ Bob ║ Smith ║ 222-22-2222 ║ 3 ║
║ Tom ║ Gunn ║ 333-33-3333 ║ 4 ║
║ Jim ║ Gunn ║ 444-44-4444 ║ 5 ║
║ Jimmy ║ Gunn ║ 444-44-4444 ║ 6 ║
║ Alice ║ Jones ║ 555-55-5555 ║ 7 ║
║ Alice ║ Jones ║ 666-66-6666 ║ 8 ║
╚═══════════╩══════════╩═════════════╩══════════╝
个期望的结果:
╔════════════╦═══════════╦══════════╦═════════════╦══════════╗
║ MATCHCOUNT ║ FIRSTNAME ║ LASTNAME ║ SSN ║ RECORDID ║
╠════════════╬═══════════╬══════════╬═════════════╬══════════╣
║ 3 ║ Bob ║ Smith ║ 111-11-1111 ║ 1 ║
║ 2 ║ Robert ║ Smyth ║ 111-11-1111 ║ 2 ║
║ 2 ║ Bob ║ Smith ║ 222-22-2222 ║ 3 ║
║ 1 ║ Tom ║ Gunn ║ 333-33-3333 ║ 4 ║
║ 2 ║ Jim ║ Gunn ║ 444-44-4444 ║ 5 ║
║ 2 ║ Jimmy ║ Gunn ║ 444-44-4444 ║ 6 ║
║ 2 ║ Alice ║ Jones ║ 555-55-5555 ║ 7 ║
║ 2 ║ Alice ║ Jones ║ 666-66-6666 ║ 8 ║
╚════════════╩═══════════╩══════════╩═════════════╩══════════╝
我已经试过
我一直在使用这两个GROUP BY和LEFT自我试图JOIN来解决这个问题。
GROUP BY失败,因为没有办法有条件地分组。
LEFT自加入失败,因为它大致返回匹配数的平方。
我会发布我的尝试的代码,但我真正的表有大量的列,实际上要复杂得多,几乎肯定会掩盖这个问题。
听起来像功课。用[你试过的]更新你的问题(http://www.whathaveyoutried.com),我将删除downvote。 – Kermit
当你将问题简化为必需品时,它通常看起来像功课。我建议你可能不喜欢你的低票。 – bnieland
对不起,你不喜欢我的downvote。我希望问题能够显示努力,而不是给代码,并期望它得到解决。我会推荐阅读[Jon Skeet的指南](http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx)关于如何写出一个好问题。 – Kermit