第一次发布海报,对此问题表示歉意。
我在MS SQL Server Management Studio中创建了一个动态数据透视表,显示员工是否具有某种技能。列标题代表我想要搜索的技能,可以是一个或多个。目前它看起来像这样;
StaffMember | Skill1 | Skill2 | Skill3 | Skill4
如果工作人员具有该技能,则该表返回1
,如果没有,则返回0
。我希望能够将所有字段连接成一个字符串,使用列标题作为值,并添加一些基本格式,即;
Joe Bloggs [Skill1-Skill4]
然后将其返回到我的MS Excel前端应用程序。
有人可以帮忙吗?
更新:
DECLARE @SQLQuery NVARCHAR(MAX)
SET @SQLQuery = '
SELECT *
FROM
(
SELECT EmployeeID, SkillID AS SkillData
FROM Skills
) P
PIVOT (
COUNT(SkillData)
FOR [SkillData] IN (' + @KeySkills + ')
) AS Piv
'
这就是我正在执行的(通过sp_executeSQL @SQLQuery),其中变量@KeySkills可以是任意数量的技能。如果用户具有相关技能,则输出显示1
。
它需要是动态的,因为我无法控制通过@KeySkills查询的技能数量。
我希望能够连接列名称,其值为1
。我可以返回到前端应用程序,作为工作人员具备这些技能的视觉标记。
答案 0 :(得分:0)
动态创建数据透视表可以使用FOR XML来构建列字符串+ STUFF以删除前导逗号:
DECLARE @KeySkills NVARCHAR(MAX);
SET @KeySkills=STUFF(
(SELECT DISTINCT
','+QUOTENAME(SkillID)
FROM
Skills
FOR XML PATH('')),
1,
1,
''
);