SQL一列多行字符串分组合并
2013-06-24 15:03
387 查看
最近工作遇到如下数据:需要合并后只剩下两行的数据,普通的group by 是不能实现的。(如图)
利用如下SQL代码,即可实现需求(如图):
利用 stuff 函数实现分拆合并操作
结果如下:
注意:以上写法只限Sql Server2005及以上版本运行。
STUFF用法:
STUFF ( character_expression , start , length ,character_expression ) 参数 character_expression 一个字符数据表达式。character_expression 可以是常量、变量,也可以是字符列或二进制数据列。
start 一个整数值,指定删除和插入的开始位置。如果 start 或 length 为负,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。start 可以是 bigint 类型。
length 一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。length 可以是 bigint 类型。
返回类型如果 character_expression 是受支持的字符数据类型,则返回字符数据。如果 character_expression 是一个受支持的 binary 数据类型,则返回二进制数据。
备注如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串。如果要删除的长度大于第一个字符串的长度,将删除到第一个字符串中的第一个字符。如果结果值大于返回类型支持的最大值,则产生错误。
示例以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串。
SELECT STUFF('abcdef', 2, 3, 'ijklmn'); GO
下面是结果集: --------- aijklmnef
(1 row(s) affected)
转自:http://blog.csdn.net/hello_world_wusu/article/details/4632013
利用如下SQL代码,即可实现需求(如图):
利用 stuff 函数实现分拆合并操作
select TeacherName,TrainingCenterName=stuff ( (select ','+TrainingCenterName from @tmp a where a.TeacherName=b.TeacherName for xml path('')),1,1,'' ) from @tmp b group by TeacherName
结果如下:
注意:以上写法只限Sql Server2005及以上版本运行。
STUFF用法:
STUFF ( character_expression , start , length ,character_expression ) 参数 character_expression 一个字符数据表达式。character_expression 可以是常量、变量,也可以是字符列或二进制数据列。
start 一个整数值,指定删除和插入的开始位置。如果 start 或 length 为负,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。start 可以是 bigint 类型。
length 一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。length 可以是 bigint 类型。
返回类型如果 character_expression 是受支持的字符数据类型,则返回字符数据。如果 character_expression 是一个受支持的 binary 数据类型,则返回二进制数据。
备注如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串。如果要删除的长度大于第一个字符串的长度,将删除到第一个字符串中的第一个字符。如果结果值大于返回类型支持的最大值,则产生错误。
示例以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串。
SELECT STUFF('abcdef', 2, 3, 'ijklmn'); GO
下面是结果集: --------- aijklmnef
(1 row(s) affected)
转自:http://blog.csdn.net/hello_world_wusu/article/details/4632013
相关文章推荐
- SQL一列多行字符串分组合并
- 分组字符合并SQL语句 按某字段合并字符串之一(简单合并)
- sql 分组合并字符串字段 分享一个小技巧
- sql 表字符串分组合并。(将sql表某列多行合为一个值)
- sql将一列数据拼成一个字符串的方法
- oracle 将查询结果中的一列合并为一个字符串
- SQL字符串分组聚合(分组后的数据查询后用逗号隔开)
- [SQL]合并字符串
- SQL将一列多行数据合并
- SQL查询语句 group by后, 字符串合并
- SQL查询语句 group by后, 字符串合并
- Sql字符串分组Split函数的两种实现方法
- sql 字符串合并类似行转列(指定字段的行结果合并成字符串)
- SQL 两列字段,合并为一个字符串,中间加符号
- Sql字符串分组Split函数的两种实现方法(转)
- sql字符串分组
- Sql字符串分组Split函数的两种实现方法
- T-Sql:字符串分组聚合,也许你还有更简单的办法?
- SQL查询语句 group by后, 字符串合并
- SQL字符串分组聚合(分组后的数据查询后用逗号隔开)