要操纵重复值?

时间:2018-12-23 09:06:11

标签: sql sql-server

我有一张桌子,上面有IDFirstNameLastname

我使用以下查询进行选择:

SELECT USER_ID as [ID], First_P + ' ' + Last_P as FullName FROM Persons

一切正常。我基本上有一个ID和全名的列表。

全名可以相同。我怎么可能找到它们并在全名单元格上添加ID?仅当名称相同时。

示例:

1      John Wick (1) 
50     John Wick (50)

我还没有发现任何类似的问题,至少对于MSSQL而言不是。所以,如果有的话,随时联系我。

2 个答案:

答案 0 :(得分:0)

请看看我的答案。我使用嵌套查询来识别重复名称的数量

SELECT 
  ID,
  IIF(NUMBEROFDUPS =1, NAME, CONCAT(NAME, ' (', ID, ')')) AS NAME
FROM
(
  SELECT 
    ID,
    CONCAT(First_P, ' ', Last_P) AS NAME,
    COUNT(*) OVER (PARTITION BY First_P,Last_P) AS NUMBEROFDUPS 
  FROM 
    Table1
) tmp;

答案 1 :(得分:0)

您可以使用外部应用程序通过First_P + ' ' + Last_P

对项目进行分组

,然后为多个项目添加大小写。

所选内容应如下:

   SELECT USER_ID as [ID], p1.First_P + ' ' + p1.Last_P + case when cnt.FullName is not null 
        then '(' + p2.[sum] + ')' else '' end as FullName FROM Persons p1
        outer apply (select First_P + ' ' + Last_P as FullName,count(1) as [sum]
                     from Persons p2
                     where p2.First_P + ' ' + p2.Last_P = p1.First_P + ' ' + p1.Last_P
                     group by First_P + ' ' + Last_P
                     having count(1) > 1) cnt