在聚合中连接列值的最佳方法

时间:2016-07-08 15:44:40

标签: sql-server

我有一张类似

的表格
srvc_dt     fclity_id  clmt_key rfrsh_dt    srvc_cd
2013-01-16  000167404   2       2013-01-31  01204
2013-01-16  000167404   2       2013-01-31  11112
2011-01-11  000167404   2488    2013-02-28  11113
2013-01-08  000167404   6070    2013-01-31  11113
2013-01-08  000167404   28371   2013-01-31  01202
2013-01-08  000167404   28371   2013-01-31  11107
2013-01-08  000167404   28371   2013-01-31  11112
2013-01-08  000167404   28371   2013-01-31  11117
2013-01-08  000167404   28371   2013-01-31  12101
2012-07-17  000167404   40571   2013-01-31  11113
2012-11-19  000167404   40571   2013-01-31  11113
2013-01-14  000167404   44189   2013-01-31  27211
2010-07-06  000167404   46396   2013-02-28  01202
2010-07-06  000167404   46396   2013-02-28  02142
2010-07-06  000167404   46396   2013-02-28  11107
2010-07-06  000167404   46396   2013-02-28  11112
2013-01-03  000167404   113264  2013-01-31  01204
2013-01-03  000167404   113264  2013-01-31  23323
2013-01-07  000167404   113390  2013-01-31  01202
2013-01-07  000167404   113390  2013-01-31  02142

我希望将其转换为类似

的内容
srvc_dt     fclity_id  clmt_key rfrsh_dt      srvc_cd
2010-07-06  000167404   46396   2013-02-28    01202,02142,11107,11112
2011-01-11  000167404   2488    2013-02-28    11113
2012-07-17  000167404   40571   2013-01-31    11113
2012-11-19  000167404   40571   2013-01-31    11113
2013-01-03  000167404   113264  2013-01-31    01204,23323
2013-01-07  000167404   113390  2013-01-31    01202,02142
2013-01-08  000167404   6070    2013-01-31    11113
2013-01-08  000167404   28371   2013-01-31    01202,11107,11112,11117,12101
2013-01-14  000167404   44189   2013-01-31    27211
2013-01-16  000167404   2       2013-01-31    01204,11112

在SQL SERVER 2012中实现此目的的最佳性能(> 100 000 000行)是什么?

PIVOT? FOR XML PATH? 动态案例陈述? 别的什么?

编辑:虽然Simulating group_concat MySQL function in Microsoft SQL Server 2005?确实显示了实现此目的的一种方法,但我正在寻找不同方法之间的性能比较

1 个答案:

答案 0 :(得分:1)

Grouped Concatenation in SQL ServerAaron Bertrand可以很好地了解您的需求。

我通常不喜欢仅限链接的答案,但由于您正在寻找各种技术的效果比较,因此没有理由在这里复制一篇大文章。

我也同意这些评论,这些评论表明您最终还是必须使用您的数据在您的系统上测试这些解决方案。如果表现真的很重要,那么你必须自己衡量。