zoukankan      html  css  js  c++  java
  • SQL一列多行字符串分组合并

    最近工作遇到如下数据:需要合并后只剩下两行的数据,普通的group by 是不能实现的。(如图)

                           

    利用如下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及以上版本运行。

    转自:http://cbcman.blog.163.com/blog/static/6481643120121127114843240/

    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

  • 相关阅读:
    win10快捷键
    emmet语法
    sublime 快捷键,左菜单乱码
    Windows 10 下 MarkdownPad2 预览无法显示是怎么回事?
    html5上传图片
    mysql多表查询
    用C#创建一个窗体,在构造函数里面写代码和在from_load事件里面写代码有什么不同?
    有复选框情况下,sql拼写技巧
    C# 图片 旋转和翻转 RotateFlip
    ListView
  • 原文地址:https://www.cnblogs.com/freezing/p/3152341.html
Copyright © 2011-2022 走看看