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

转:利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符的更多相关文章

  1. 利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符

    T-sql 有一个for xml path('')的从句能把多行结果合并到一行,并成为xml 格式 比如有一张表tb有两列,其格式和数据为: id value—————1 aa1 bb2 aaa2 b ...

  2. SQL - for xml path('') 实现多行合并到一行, 并带有分隔符

    docs.microsoft.com 链接:  SQL一个应用场景与FOR XML PATH应用 首先呢!我们在增加一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号, ...

  3. 使用FOR XML PATH实现多行数据合并成一列

    有时为避免循环操作数据库.列表展示等一些原因需要将数据及关联数据批量加载进行集中处理,一种解决办法可以使用FOR XML PATH将多行数据合并成一列,达到字段拼接的效果.例如有两个表, 部门表T_D ...

  4. sql server的for xml path与变通的行转列

    SQL Server中有提供一个FOR XML PATH的子句(不知道能不能叫函数),用来将查询结果行输出成XML格式,我们可以通过这个语法做一些变通实现一些特定的功能,比如说行转列.要会变通的话,当 ...

  5. sql中的for xml path() 实现字符串拼接

       通常我们需要在sql中拼接字符串   ,可以用for xml path() 来进行拼接,如下实例. 同时未去掉最后一个逗号可以用LEFT函数来实现.     ) AS UserName  FRO ...

  6. SQL字符串拼接FOR XML PATH

    在工作中难免会遇到数据库中数据要进行拼接的问题,字符串拼接可以是用SQL的拼接也可以使用C#的拼接,本次说的是使用SQL进行拼接. 首先插入测试语句: --测试语句,准备创建表的语句:如下 CREAT ...

  7. Sql Server 之 for xml (path,raw,auto,root)

    1.for xml path('str') select ID,CreateTime  from dbo.ArticleInfo for xml Path('mytitle') 结果:(注意:如果是s ...

  8. sql server 使用for xml path 将1列多行转换为字符串连接起来,俗称 sql 合并字符

    由于项目的原因,需要将一些记录分类汇总,但还要列出相关的明细,这样的需求我还是第一次遇到,蛋疼了,还是请求一下度娘吧.搜索一番还是有结果,请看以下例子: create table tb ([id] i ...

  9. sql查询语句for xml path语法

    [原地址] for xml path作用:将多行的查询结果,根据某一些条件合并到一行. 例:现有一张表 执行下面语句 select Department, (SELECT Employee+',' F ...

随机推荐

  1. 算法入门经典-第六章 例题6-21 SystemDependencies

    题意:软件组件之间会有依赖关系,比如你下一个Codeblocks你也得顺带着把编译器给下上.你的任务是模拟安装和卸载软件组件的过程.有以下五种指令,如果指令为“END”则退出程序:若为以下四种指令,则 ...

  2. C++之易混淆知识点五

    一.解析类继承中父类与子类之间成员的访问可见度: 外部可见度:指的是被子类继承的父类成员在子类的外部访问控制度,有protected.public.private. 内部可见度:指的是被子类继承的父类 ...

  3. Android GreenDao 使用教程

    上一篇 总结了grendao 环境搭建以及简单的增删查改,接下来将全面解析框架的使用,基于上篇的orm模型(Note)数据库讲解 GreenDao的插入: 插入的方式有很多: daoSession.g ...

  4. java ScriptEngine 使用 (java运行脚本文件)

    转自:http://www.tuicool.com/articles/imEbQbA Java SE 6最引人注目的新功能之一就是内嵌了脚本支持.在默认情况下,Java SE 6只支持JavaScri ...

  5. Sona && Little Elephant and Array && Little Elephant and Array && D-query && Powerful array && Fast Queries (莫队)

    vjudge上莫队专题 真的是要吐槽自己(自己的莫队手残写了2个bug) s=sqrt(n) 是元素的个数而不是询问的个数(之所以是sqrt(n)使得左端点每个块左端点的范围嘴都是sqrt(n)) 在 ...

  6. C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件

    C#追加文件 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw ...

  7. ES6 Symbol类型 附带:Proxy和Set

    七种数据类型 ·Symbol ·undefined ·null ·Boolean ·String ·Number ·Object let a = Symbol('this is a symbol'); ...

  8. [AtCoder Grand Contest 024 Problem E]Sequence Growing Hard

    题目大意:考虑 N +1 个数组 {A0,A1,…,AN}.其中 Ai 的长度是 i,Ai 内的所有数字都在 1 到 K 之间. Ai−1 是 Ai 的子序列,即 Ai 删一个数字可以得到 Ai−1. ...

  9. [读书笔记] R语言实战 (六) 基本图形方法

    1.  条形图 barplot() #载入vcd包 library(vcd) #table函数提取各个维度计数 counts <- table(Arthritis$Improved) count ...

  10. debian 9 安装Virtual Box

    1.去官网下载deb包,例如包名: virtualbox-.2_5.2.18-124319_Debian_stretch_amd64.deb 2.安装 .2_5.2.18-124319_Debian_ ...