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;
有一些关于您想如何打破关系的猜测(或者您可能不在乎),但没有“首先”的概念,除非您明确说明命令。
我正在尝试进行查询,按 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;
有一些关于您想如何打破关系的猜测(或者您可能不在乎),但没有“首先”的概念,除非您明确说明命令。