SQL Server2005杂谈(4):在SQL Server2005中按列连接字符串的三种方法
2009-02-21 10:22:27 来源:WEB开发网核心提示:上一篇:SQL Server2005杂谈(3):四个排名函数(row_number、rank、dense_rank和ntile)的比较最近做一个项目,遇到一个在分组的情况下,SQL Server2005杂谈(4):在SQL Server2005中按列连接字符串的三种方法,将某一列的字段值(varchar类型)连接起来的
上一篇:SQL Server2005杂谈(3):四个排名函数(row_number、rank、dense_rank和ntile)的比较
最近做一个项目,遇到一个在分组的情况下,将某一列的字段值(varchar类型)连接起来的问题,类似于sum函数对int型字段值求和。 如有一个表t_table,结构和数据如图1
图1
其中要按着xh字段分组,并且将每一组name字段值连接起来。最终结果希望如图2所示
图2
表中的th字段值对于每一个xh值是唯一的,也是有限的,也就是说,对于一个xh值,th的值不会太多,如最多是10个(从1至10)。
以上需求最终想了三种方法来解决这个问题。
一、修改表结构
如果是新的项目,可以考虑修改一下表的结构。如果t_table的结构修改如下:
xh value1value2 value3 value4 .... .... value10
0001123456654321456789
000212abcd4d2r343343dfd
0003abcde3132323
这种方法将value的值纵向改为横向,也就是说,按每一个xh值,将value字段的值按逆时针旋转了90度。 但这种方法要有一个前提,就是假设xh的每一个值所对应的value值不会太多,如上面不超过10个,这样才有可能建立有限个字段。如果按着上面的字段结构,只需要将这些字段加一起就可以了,也不用分组。如下所示:
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接