我的联盟 作品 招聘 外包 人才  酷站加油 国内 国外 CSS  资源图库 图库 模板 矢量 图标  设计欣赏 界面 LOGO 插画 艺术  网页 平面  专访 名站 竞赛 社区
当前位置:首页 > 编程开发 > 数据库编程 > 正文
SQL Server2005中按列连接字符串三种方法
来源:68design.net 2009年02月24日 09:21 网友评论:0条 点击:
最近做一个项目,遇到一个在分组的情况下,将某一列的字段值(varchar类型)连接起来的问题,类似于sum函数对int型字段值求和。如有一个表t_table,结构和数据如图1

图1

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

图2

表中的th字段值对于每一个xh值是唯一的,也是有限的,也就是说,对于一个xh值,th的值不会太多,如最多是10个(从1至10)。

以上需求最终想了三种方法来解决这个问题。

一、修改表结构

如果是新的项目,可以考虑修改一下表的结构。如果t_table的结构修改如下:

xh     value1 value2   value3    value4     .... ....                 value10
   0001 123456 654321 456789  
   0002 12abcd 4d2r343 343dfd 
   0003 abcde3 132323

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

select xh , (value1 + value2 + value3 +  + value10) as value from t_table

但这种方法至少有如下三个缺陷:

1. 需要修改表结构,这对于已经进行很长时间或是已经上线的项目产不适用

2. 对每一个xh字段的value取值数有限制,如果太多,就得建立很多字段。这样性能会降低。

3. 这样做虽然查询容易,但如果需要对每一个xh的不同值频繁修改或加入新的值时,如果把它们都放到一行,容易因为行锁而降低性能。

首页 上一页 [1] [2] [3] [4] 下一页 尾页
上一篇:使用智能优化器提高Oracle数据库性能极限   下一篇:升级数据库时遇到的Text file busy错误
收藏此页】【打印】【关闭
 相关文章  我要点评

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 设计服务 | 广告服务 | 常见问题 | 网站地图 | 法律声明 | 联系我们
Copyright © 2003-2012 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】