seara 发表于 2013-2-5 00:25:39

SQL Server2005杂谈(2):按列连接字符串的三种方法

本文为原创,如需转载,请注明作者和出处,谢谢!



最近做一个项目,遇到一个在分组的情况下,将某一列的字段值(varchar类型)连接起来的问题,类似于sum函数对int型字段值求和。 如有一个表t_table,结构和数据如图1

http://images.cnblogs.com/cnblogs_com/nokiaguy/clragg/01.jpg

图1

其中要按着xh字段分组,并且将每一组name字段值连接起来。最终结果希望如图2所示


http://images.cnblogs.com/cnblogs_com/nokiaguy/clragg/02.jpg

图2

表中的th字段值对于每一个xh值是唯一的,也是有限的,也就是说,对于一个xh值,th的值不会太多,如最多是10个(从1至10)。
以上需求最终想了三种方法来解决这个问题。
一、修改表结构
如果是新的项目,可以考虑修改一下表的结构。如果t_table的结构修改如下:

xh value1value2value3 value4 .... .... value10
0001123456654321456789
000212abcd4d2r343343dfd
0003abcde3132323
这种方法将value的值纵向改为横向,也就是说,按每一个xh值,将value字段的值按逆时针旋转了90度。 但这种方法要有一个前提,就是假设xh的每一个值所对应的value值不会太多,如上面不超过10个,这样才有可能建立有限个字段。如果按着上面的字段结构,只需要将这些字段加一起就可以了,也不用分组。如下所示:

<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->selectxh,(value1+value2+value3+http://www.cnblogs.com/Images/dot.gif+value10)asvaluefromt_table
页: [1]
查看完整版本: SQL Server2005杂谈(2):按列连接字符串的三种方法