Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS SQL-显示姓氏&;不改变记录的名字_Sql_Sql Server - Fatal编程技术网

MS SQL-显示姓氏&;不改变记录的名字

MS SQL-显示姓氏&;不改变记录的名字,sql,sql-server,Sql,Sql Server,我有以下使用两个表的查询。一个是联系人,另一个是电子邮件。联系人有以下列:ContactId、FirstName、LastName。电子邮件包含以下列:EmailId、ContactId、EmailAddress 我有一个运行基本重复检查的查询。它将返回一个数值和一封电子邮件(即2-abc@yahoo.com=2个联系人有此电子邮件abc@yahoo.com). 我试图让它显示与电子邮件相关的名字和姓氏,但当我这样做时,它会改变生成的数据量。这很可能是因为它抓取的电子邮件上也有名字和姓氏 这是一

我有以下使用两个表的查询。一个是联系人,另一个是电子邮件。联系人有以下列:ContactId、FirstName、LastName。电子邮件包含以下列:EmailId、ContactId、EmailAddress

我有一个运行基本重复检查的查询。它将返回一个数值和一封电子邮件(即2-abc@yahoo.com=2个联系人有此电子邮件abc@yahoo.com). 我试图让它显示与电子邮件相关的名字和姓氏,但当我这样做时,它会改变生成的数据量。这很可能是因为它抓取的电子邮件上也有名字和姓氏

这是一个问题;当我尝试输入时,请选择CONTACT.LASTNAME和CONTACT。FIRSTNAME,以及GROUP BY,它将更改输出的数据量;创建了更多的列(预期),但也有更多的行,并且数据实际上不太相关(返回了更多的空值)。这是什么原因造成的,我如何修复它

SELECT COUNT(CONTACT.CONTACTID) AS [DUPLICATECOUNT], EMAIL.ADDRESS AS [EMAILADDRESS]
FROM CONTACT
INNER JOIN EMAIL on EMAIL.ContactID = CONTACT.ContactId
GROUP BY EMAIL.ADDRESS
HAVING COUNT (CONTACT.ContactID) > 1
ORDER BY [DUPLICATECOUNT] DESC

如果您的MS SQL Server是2008或更新版本,则可以使用窗口功能查找重复项。示例查询如下所示

select c.firstname, c.lastname, e.emailaddress,
       count(c.contactid) over(partition by e.emailaddress order by e.emailaddress) cnt
from contact c
     inner join email e on c.contactid = e.contactid 
order by cnt desc

好的,您正试图让它显示与电子邮件关联的名字和姓氏:

select FirstName, LastName
FROM CONTACT C WITH (NOLOCK), EMAIL E WITH (NOLOCK) 
where C.ContactID = E.ContactId
AND EmailAddress='emailaddress@yahoo.com'

定义“更改生成的数据量”:更多列(保证)?更多行(不太可能)?如果是前者,你还期待什么?你想让它们显示为一列(想想“单元格”)吗?更多的列,更少的行编辑:实际上更多的行,但技术上更少的数据(显示更多的空值)你期望的结果是什么?如您所知,如果名称不同,按这两个字段分组将影响计数,这将添加更多结果。你想把名字合并成一列吗?“你想让它们显示为一列(想想“单元格”)吗?”然后研究基本的字符串连接。预期的结果是有四列:重复计数、被复制的地址以及与电子邮件地址关联的名/姓。但是,根据我的查询方式,它只是将结果更改为仅过滤具有名字+姓氏的重复项。如果这些名称可以组合成一列,这也可以起作用,这是我没有尝试过的。