我有点坚持查询,我正在努力做一个例子。
目前我有两个问题:
SELECT FirstName, LastName, COUNT(*) instance
FROM Customer
GROUP BY FirstName, LastName
HAVING COUNT(*) > 1 ORDER BY instance DESC
这通过firstname和lastname获取所有用户,并计算有多少用户,基本上我使用它来确保我没有重复的用户条目。这很好。
然后我有第二个查询 - 我无法修改此数据库,因为其他人创建并生产了它,我需要从另一个表中获取电子邮件地址,如下所示:
SELECT c.PK_CustomerID, c.FirstName, c.LastName, u.Email
FROM Customers c, Users u
WHERE c.Location = 2 AND c.FK_UserID = u.PK_UserID
ORDER BY c.PK_CustomerID ASC
这样就可以得到我想要的东西。但是现在我希望得到它,我得到客户ID,名字和姓氏,另一个表中的电子邮件......但我也想知道有多少其他人拥有相同的名字和姓氏。< / p>
所以基本上我得到了我想要的全部细节,并且我被提醒的事实是,那里有人分享名字和姓氏(所以我知道我没有复制我的客户)。
我真的坚持这个,我尝试了INNER JOIN,但我不知道如何融入我的条件
答案 0 :(得分:2)
您可以使用窗口函数(假设Sql Server 2008或更新版本):
添加到您的第二个查询:DataFrame
,它将为您计算有多少其他记录与当前记录共享相同的名字和姓氏。
COUNT(*) OVER (PARTITION BY c.firstname, c.lastname) as instance