如何根据表中的多列过滤重复记录,然后根据排名从重复记录中删除记录

问题描述 投票:0回答:0
`SELECT 
   t.UniqueID, t.qty, t.name1, t.Surname, t.City,t.State,t.Specialty, t.Languages,t.Company, t.Email
FROM (
    SELECT
       s.name1, s.Surname, s.City,s.State,s.Specialty, s.Languages,s.Company, s.Email,s.UniqueID
      , COUNT(*) OVER (PARTITION BY s.name1, s.Surname, s.City,s.State) AS qty
    
    FROM [dbo].[Diverse_Full_Dataset] s
    ) t
WHERE 
t.qty >1`

上面的查询给出了这样的重复记录,其中包含表中的专业、语言、公司和电子邮件列 请打开截图查看 https://i.stack.imgur.com/YL2qx.png

查询给出了大约 1,13,721 条记录 首先,我需要对 Speciality、LANGUAGE、COMPANY 和 EMAIL 的数据字段施加权重: 我想写一个查询,如果我有一个大于 1 的记录,假设它是 4,那么首先我想从重复行的所有 4 行中检查 Specialty 是否为 null,如果不是 null,则删除所有重复的记录,这将是 rest离开,现在如果 Specialty 为 null 然后检查下一个 LANGUAGE 是否为 null 如果不为 null 然后删除所有重复记录,如果 LANGUAGE 为 null 然后检查 Company 是否为 null 如果不为 null 然后删除所有重复记录现在将被保留如果 Company 为 NULL,则检查 Email 是否为空。它只是在这四个列上设置了优先级

我只想查询上述场景。 对不起,我无法更好地向您解释,请问我以上内容是否无法理解。

我什么都没尝试,因为我在用 sql 编写条件方面非常新

sql sql-server normalization database-normalization
© www.soinside.com 2019 - 2024. All rights reserved.