在SQL Server 2008中将行连接到单行

时间:2017-12-26 06:53:28

标签: sql sql-server-2008 monetdb monetdblite

我正在使用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还有其他选择吗?

修改

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

1 个答案:

答案 0 :(得分: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

这样可行。

相关问题