s-s-rS - Group_Concat 使用表达式等效?

Posted

技术标签:

【中文标题】s-s-rS - Group_Concat 使用表达式等效?【英文标题】:s-s-rS - Group_Concat Equivalent using an Expression? 【发布时间】:2010-08-02 15:44:41 【问题描述】:

我可以在 Sql Server Reporting Services 中使用表达式来组合组内列的所有值吗?我正在尝试完成 mysql 的 group_concat 函数所做的事情,但在报告中(而不是在查询中)。

示例。我想做这个数据:

Group 1  Value
Test
         A
         B
Test 2
         C
         D

在报告中看看这个:

Group 1 Value
test    A, B
test 2  C, D

【问题讨论】:

【参考方案1】:

尝试这样的事情(适用于 SQL Server 2005 及更高版本):

set nocount on;
declare @t table (id int, name varchar(20), x char(1))
insert into @t (id, name, x)
select 1,'test1', 'a' union
select 1,'test1', 'b' union
select 1,'test1', 'c' union
select 2,'test2', 'a' union
select 2,'test2', 'c' union
select 3,'test3', 'b' union
select 3,'test3', 'c' 
SET NOCOUNT OFF

SELECT p1.id, p1.name,
          stuff(
                   (SELECT
                        ', ' + x
                        FROM @t p2
                        WHERE p2.id=p1.id
                        ORDER BY name, x
                        FOR XML PATH('') 
                   )
                   ,1,2, ''
               ) AS p3
      FROM @t p1
     GROUP BY 
        id, name

输出:

id          name                 p3
----------- -------------------- ---------
1           test1                a, b, c
2           test2                a, c
3           test3                b, c

(3 row(s) affected)

【讨论】:

以上是关于s-s-rS - Group_Concat 使用表达式等效?的主要内容,如果未能解决你的问题,请参考以下文章

使用 group_concat 更新 mysql 表

表连接多个 group_concat

MySQL UPDATE 与 GROUP_CONCAT 加入三个表

多个表上的mysql group_concat

如何使用 s-s-rS 中的聚合函数过滤表?

如何包含两个表中的所有值? group_concat 和其他值