使用 CAST() 在字段中创建列表
Creating a List within a Field Using CAST()
我正在尝试创建一个标题为“技能”的列,其中列出了与给定人员相关的每项技能。基本上,我目前收到以下结果:
NAME SKILL
Person A Programming
Person A Web Design
Person A SQL
Person B Project Management
Person B Written Communication
我需要得到这样的结果:
NAME SKILL
Person A Programming, Web Design, SQL
Person B Project Management, Written Communication
这是我的 SQL 代码目前的样子:
CAST((
SELECT InterestCodeRoot.Code + ','
FROM InterestCodeRoot
WHERE EmployeeInterestCode.CodeIdent = InterestCodeRoot.CodeIdent
FOR XML PATH(''))as varchar(max))
AS [Skill ID],
我也尝试过使用 STUFF() 和 GROUP_CONCAT(),但两种方法都不起作用。这是我得到的最接近的。如有任何建议或帮助,我们将不胜感激。
最简单的方法是string_agg()
,可在较新版本的SQL 服务器:
select name, string_agg(skill, ', ') within group (order by skill)
from InterestCodeRoot
group by name;
我正在尝试创建一个标题为“技能”的列,其中列出了与给定人员相关的每项技能。基本上,我目前收到以下结果:
NAME SKILL
Person A Programming
Person A Web Design
Person A SQL
Person B Project Management
Person B Written Communication
我需要得到这样的结果:
NAME SKILL
Person A Programming, Web Design, SQL
Person B Project Management, Written Communication
这是我的 SQL 代码目前的样子:
CAST((
SELECT InterestCodeRoot.Code + ','
FROM InterestCodeRoot
WHERE EmployeeInterestCode.CodeIdent = InterestCodeRoot.CodeIdent
FOR XML PATH(''))as varchar(max))
AS [Skill ID],
我也尝试过使用 STUFF() 和 GROUP_CONCAT(),但两种方法都不起作用。这是我得到的最接近的。如有任何建议或帮助,我们将不胜感激。
最简单的方法是string_agg()
,可在较新版本的SQL 服务器:
select name, string_agg(skill, ', ') within group (order by skill)
from InterestCodeRoot
group by name;