yel*_*ood 5 sql-server-2008 sql-server aggregate
假设我有一个表employees
,如下所示:
Name Sex Role
Bob M Developer
Joe M QA
Run Code Online (Sandbox Code Playgroud)
现在,我在这个表中遇到了重复行的问题。我会在某个时候修复它,但这不是问题。我目前需要的是查询这样一个表的东西:
Name Sex Role
Bob M Developer
Bob M Janitor
Joe M QA
Joe M CEO
Run Code Online (Sandbox Code Playgroud)
并将输出以下行:
Name Role
Bob Developer, Janitor
Joe QA, CEO
Run Code Online (Sandbox Code Playgroud)
对我来说,“角色”将被拆分为单独的列还是具有多个值的单个列,这对我来说并不重要。
如果重要,请使用 SQL Server 2008。
MySQL 中的 Group_concat 在 SQL Server 2016 之前的 SQL Server 中不可用。 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;
Run Code Online (Sandbox Code Playgroud)
这些详细信息是从不同来源收集的:
归档时间: |
|
查看次数: |
21626 次 |
最近记录: |