突出显示重复值

时间:2015-03-26 10:50:24

标签: tsql ssrs-2008-r2

我有以下脚本:

   SELECT
   Reference.ReferenceNumber AS [Reference.ReferenceNumber)
   Reference.LastName
   Reference.FirstName
   Address.ReferenceNumber AS [Address.ReferenceNumber]
   Address.Address1
   Address.Address2
   Address.Address3
   Address.Address4
   Address.ZipCode
   Telephone.ReferenceNumber AS [Telephone.ReferenceNumber]
   Telephone.TelephoneNumber
   Email.ReferenceNumber AS [Email.ReferenceNumber]
   Email.EmailAddress
   FROM
   Reference
   INNER JOIN Address
   ON Reference.ReferenceNumber = Reference.ContactNumber
   LEFT OUTER JOIN Telephone
   ON Reference.ReferenceNumber = Telephone.ReferenceNumber
   LEFT OUTER Join Email
   ON Reference.ReferenceNumber = Email.ReferenceNumber

这会吸引所有客户,以及他们的地址,电子邮件和电话号码。

然而,有些人有重复的姓氏和地址。

请问您能否对脚本进行修改,以显示哪些记录是重复的?理想情况下,我希望输出显示姓氏,地址1和邮政编码相同的位置,并仅将输出限制为重复行。 非常感谢。

1 个答案:

答案 0 :(得分:1)

类似

SELECT
Reference.ReferenceNumber AS [Reference.ReferenceNumber),
case when vrln.c is null then Reference.LastName else 'dup: ' + Reference.LastName end as LastName, 
Reference.FirstName,
Address.ReferenceNumber AS [Address.ReferenceNumber],
Address.Address1,
Address.Address2,
Address.Address3,
Address.Address4,
Address.ZipCode,
Telephone.ReferenceNumber AS [Telephone.ReferenceNumber],
Telephone.TelephoneNumber,
Email.ReferenceNumber AS [Email.ReferenceNumber],
Email.EmailAddress
FROM
Reference
INNER JOIN Address
ON Reference.ReferenceNumber = Reference.ContactNumber
LEFT OUTER JOIN Telephone
ON Reference.ReferenceNumber = Telephone.ReferenceNumber
LEFT OUTER Join Email
ON Reference.ReferenceNumber = Email.ReferenceNumber

left join (
    select rln.LastName, add.Address1, add.ZipCode, count(rln.LastName) as c
    from 
        Reference rln 
        INNER JOIN Address add
            ON rln.ReferenceNumber = add.ReferenceNumber
    group by rln.LastName, add.Address1, add.ZipCode 
    having count(rln.LastName) > 1
) vrln on Reference.LastName = vrln.LastName and Address.Address1 = vrln.Address1 and Address.ZipCode = vrln.ZipCode

where vrln.c is not null

但是,要找到重复项:

select rln.LastName, add.Address1, add.ZipCode, count(rln.LastName) as c
from 
    Reference rln 
    INNER JOIN Address add
        ON rln.ReferenceNumber = add.ReferenceNumber
group by rln.LastName, add.Address1, add.ZipCode 
having count(rln.LastName) > 1

就够了