如何通过SQL Server实现合并重复FirstName的查询结果?
问题描述

我希望得到如上图所示的查询结果,以下是我的SQL Server脚本:
-- Create table CREATE TABLE Employee ( EmployeeID INT PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50) ); -- Insert records INSERT INTO Employee (EmployeeID, FirstName, LastName) VALUES (1, 'John', 'Doe'); INSERT INTO Employee (EmployeeID, FirstName, LastName) VALUES (2, 'Jane', 'Smith'); INSERT INTO Employee (EmployeeID, FirstName, LastName) VALUES (3, 'Hamza', 'Johnson'); INSERT INTO Employee (EmployeeID, FirstName, LastName) VALUES (4, 'Hamza', 'Tes');
解决方案
由于无法查看图片的具体结果样式,我提供两种常见需求的实现脚本,你可以根据实际情况选择:
1. 合并相同FirstName对应的LastName(适用于SQL Server 2017及以上版本)
如果图片是将同一FirstName下的所有LastName拼接展示,使用STRING_AGG函数:
SELECT FirstName, STRING_AGG(LastName, ', ') AS CombinedLastNames FROM Employee GROUP BY FirstName ORDER BY FirstName;
执行结果:
| FirstName | CombinedLastNames |
|---|---|
| Hamza | Johnson, Tes |
| Jane | Smith |
| John | Doe |
2. 统计每个FirstName的员工数量
如果图片是统计各FirstName对应的员工总数,使用COUNT聚合函数:
SELECT FirstName, COUNT(EmployeeID) AS EmployeeCount FROM Employee GROUP BY FirstName ORDER BY FirstName;
执行结果:
| FirstName | EmployeeCount |
|---|---|
| Hamza | 2 |
| Jane | 1 |
| John | 1 |
如果你的需求是其他样式(比如全量展示并按特定规则排序),可以补充描述图片的具体内容,我会调整对应的SQL脚本。
内容的提问来源于stack exchange,提问作者Hamza El Hammoudi
相关产品推荐
相关产品推荐

