zoukankan      html  css  js  c++  java
  • 转:利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符

    http://blog.csdn.net/rav009/article/details/50723307

    T-sql 有一个for xml path('')的从句能把多行结果合并到一行,并成为xml 格式

    比如有一张表tb有两列,其格式和数据为:

    id value
    —————
    1 aa
    1 bb
    2 aaa
    2 bbb
    2 ccc

    如果对其执行sql: select id, value from tb for xml path('tbnode')
    则返回的结果集仅为一行一列:

    <tbnode><id>1</id><value>aa</value><id>1</id><value>bb</value>........<id>2</id><value>ccc</value></tbnode>

    现在我们取巧一点, 省略path括号里的内容, 同时把这两列想办法变成匿名列,sql如下:

    1. select id+'',value+'' from tb for xml path('')     //在path("") 不写任何东西会自动生成一个序列标识符
    2. 那么返回结果如下(也是一个一行一列):

      1aa1bb2aaa2bbb2ccc

    3. 基于这样的思路, 现在要对所有不同的ID的value进行合并,希望得到如下的结果集:

      id value
      —————
      1 aa,bb
      2 aaa,bbb,ccc

    4.  select value+',' from tb where ID=1 for xml path('')  
      这样就可以得到 "aa,bb,"
    5.  select id,valuelist=stuff((select ','+value from tb as b where b.ID=a.ID for xml path('')),1,1,'')   //注意这个Stuff函数的替换,因为select后跟的是',' 所以要把这个‘,’ 替换掉
          from tb as a   
          group by id
  • 相关阅读:
    漂亮的圆角,没有使用图片
    近日,ubuntu,未来,other
    本机邮件服务器配置
    CSS中文直書排版
    初学媒体软件时的一些鼠绘作品
    早期的一些关于logo的作品
    没毕业在学时为找工作设计个人画册
    神气蹦蹦 我原创可爱游戏
    asdff
    从前的图像处理的作品,胡乱整理
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/8067426.html
Copyright © 2011-2022 走看看