SQL 服务器组按最大字符串列

SQL Server group by max string column

我正在尝试进行查询,按 ID_Country、Year_、Employee_ID 列对我进行分组,并将最大值应用于 Employee_Name 列,以便它 returns 员工姓名有更多字符,但每次执行 returns 不同的结果。

table 员工数据:

我正在分组以删除重复记录问题是员工姓名以不同的方式注册

预期结果是这样的,所以总是returns字符数最多的员工姓名

这是我的查询:

SELECT DISTINCT [ID_Country] ,[Year_] ,[Employee_ID] ,MAX([Employee_Name]) AS Employee_Name
FROM Employee_Tbl
GROUP BY [ID_Country],[Year_],[Employee_ID]

谁能告诉我查询的正确方法,它总是 returns 字符数最多的员工姓名?

您可以使用 ROW_NUMBER() 根据国家和年份分配行号,按名称的长度降序排列:

SELECT ID_Country, Year_, Employee_ID, Employee_Name
FROM
(
  SELECT ID_Country, Year_, Employee_ID, Employee_Name, 
    rn = ROW_NUMBER() OVER 
    (
      PARTITION BY ID_Country, Year_ 
      ORDER BY LEN(Employee_Name) DESC, Employee_ID
    )
  FROM dbo.Employee_Tbl
) AS Employees WHERE rn = 1;

有一些关于您想如何打破关系的猜测(或者您可能不在乎),但没有“首先”的概念,除非您明确说明命令。