计算名字和姓氏的实例,同时有条件地吸引用户

时间:2018-03-29 20:54:16

标签: sql sql-server

我有点坚持查询,我正在努力做一个例子。

目前我有两个问题:

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,但我不知道如何融入我的条件

1 个答案:

答案 0 :(得分:2)

您可以使用窗口函数(假设Sql Server 2008或更新版本):

添加到您的第二个查询:DataFrame,它将为您计算有多少其他记录与当前记录共享相同的名字和姓氏。

COUNT(*) OVER (PARTITION BY c.firstname, c.lastname) as instance