【问题标题】:Concatenate rows to single row in SQL Server 2008在 SQL Server 2008 中将行连接到单行
【发布时间】:2017-12-27 20:29:35
【问题描述】:

我使用 MonetDb 进行分析,它使用 SQL Server 2008 进行查询处理。

我有一个表 ROLES,下面有数据。

Emp ROLE
1   ROLE_1
1   ROLE_2
1   ROLE_3
2   ROLE_1
2   ROLE_2
3   ROLE_3
3   ROLE_4

我想输出为

EMP ROLE
1   ROLE_1, ROLE_2, ROLE_3
2   ROLE_1, ROLE_2
3   ROLE_3, ROLE_4

我试过 group_concat,但它在说

没有这样的聚合'group_concat'

我试过的查询如下

select
    emp,
    group_concat(role) as wo
from 
    roles 
group by emp

group_concat 有什么替代方案吗?

编辑:

请阅读 cmets,我使用的是不支持 group_concat 和 xml 的 monetdb。

【问题讨论】:

标签: sql sql-server-2008 monetdb monetdblite


【解决方案1】:

Monetdb 具有 R 集成。你可以写一个 R 函数。

Check this link

R函数:

CREATE AGGREGATE str_aggre(val STRING) RETURNS STRING LANGUAGE R {
   aggregate(val, by=list(aggr_group), FUN=toString)$x 
};

SQL 命令:

select
    emp,
    str_aggre(role) as wo
from 
    roles 
group by emp

这会起作用。

【讨论】:

  • 谢谢。我也尝试了 R 函数。这对我有帮助。你拯救了我的一天。
猜你喜欢
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多