假设我有一个employees表,如下所示:
Name Sex Role
Bob M Developer
Joe M QA现在,我对这个表中重复的行有一个问题。总有一天我会修好的,但这不是问题。我目前需要的是查询这样一个表的东西:
Name Sex Role
Bob M Developer
Bob M Janitor
Joe M QA
Joe M CEO并输出以下行:
Name Role
Bob Developer, Janitor
Joe QA, CEO对于我来说,“角色”是被分割成单独的列,还是是一个具有多个值的列,这都不重要。
如果有关系,可以使用Server 2008。
发布于 2011-07-20 15:12:26
Group_concat和MySQL一样,在Server中直到2016年是不可用的。然而,vNext将引入STRING_AGG,这将提供同等的功能。
不过,您有一些手动选项:
解决当前情况的一个解决方案(刚刚从SO中获取Brad的答案并为您的表定制)将是:
SELECT name, LEFT(roles , LEN(roles )-1) AS roles
FROM employee AS extern
CROSS APPLY
(
SELECT role + ','
FROM employee AS intern
WHERE extern.name = intern.name
FOR XML PATH('')
) pre_trimmed (roles)
GROUP BY name, roles;这些细节是从不同的来源收集的:
发布于 2011-07-20 08:00:44
我会尝试使用以下方法,但请注意,这可以在非常大的表上运行相当长的时间。
select a.name, a.role, b.role from employees a, employees b where a.name=b.name and a.role<>b.role我将表命名为"employees“,并将列命名为"name”和"role“。
https://dba.stackexchange.com/questions/3965
复制相似问题