示例表 tb 数据如下

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

第一种

SELECT id,    [val]=( SELECT [value] +','    FROM tb AS b    WHERE b.id = a.id    FOR XML PATH('')  )    FROM tb AS a  


第一种显示结果 
1 aa,bb, 
1 aa,bb, 
2 aaa,bbb,ccc, 
2 aaa,bbb,ccc, 
2 aaa,bbb,ccc,

第二种

SELECT id,    [val]=( SELECT [value] +','    FROM tb AS b    WHERE b.id = a.id    FOR XML PATH('')  )    FROM tb AS a     GROUP BY id  

第二种显示结果 
1 aa,bb, 
2 aaa,bbb,ccc,

第三种 (用STUFF函数替换掉首端的逗号)

SELECT id,    [val]=STUFF( (SELECT ','+[value]    FROM tb AS b    WHERE b.id = a.id    FOR XML PATH('')) , 1 , 1 , '' )   FROM tb AS a     GROUP BY id  

第三种显示结果 
1 aa,bb 
2 aaa,bbb,ccc

STUFF 函数将字符串插入另一字符串。它在第一个字符串中从开始位置删除指定长度的字符;然后将第二个字符串插入第一个字符串的开始位置。
STUFF ( character_expression , start , length ,character_expression_insert )

第四种 (用REPLACE函数将所有空格替换成逗号)

SELECT id,    [val]= REPLACE( (SELECT [value] AS [data()]   FROM tb AS b    WHERE b.id = a.id    FOR XML PATH('')) , '', ',')   FROM tb AS a     GROUP BY id    

结果与第三种一样。

解析:[data()] 这里据说是起到一个类似数组的作用,具体用法还要再查。

如果外围不用REPLACE函数包住,则返回的结果是 aaa bbb ccc ,每项之间有空格,所以最后用REPLACE函数将所有空格替换成逗号。

转自: http://www.cnblogs.com/aolin/archive/2011/04/12/2014122.html


转载于:https://www.cnblogs.com/thinkCoding/archive/2011/11/29/2267379.html

合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数相关推荐

  1. Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC & ...

  2. Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  3. php 查询数据表第2条,PHP 连接 MySQL 数据库的连接函数 mysql_connect 的第二个参数是( )。...

    问题:PHP 连接 MySQL 数据库的连接函数 mysql_connect 的第二个参数是( ). 更多相关问题 下图中ACB为晨昏线,C地点位于格陵兰岛上.回答(1)--(3)题.(1)飞机从A点 ...

  4. 使用自连接、for xml path('')和stuff合并显示多行数据到一行中(转)

    原文: http://njm.iteye.com/blog/795881 --使用 自连接.for xml path('')和stuff合并显示多行数据到一行中--注 --1.计算列可以不用包含在聚合 ...

  5. 使用 FOR XML PATH 合并SQL Server查询结果的重复行

    参考资料: http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html http://www.cnblogs.com/code ...

  6. SQLSERVER将子查询数据合并拼接成一个字段

    业务场景: 有两张表,部门表和员工表 部门表: 部门编码        部门名称    1                     A            2                     ...

  7. oracle 行内容合并,[转]Oracle 多行的数据合并

    Oracle合并行范例 现有如下数据 id name 1 a1 2 a2 3 a3 1 b1 3 b3 1 c1 就是把相同的id的不同行合并 结果是 id name 1 a1/b1/c1 2 a2 ...

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

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

  9. 怎么把好几行弄成一行_怎么把excel表格里多行变成一行数据|excel表格中让多行内容变成为一行...

    excel怎么把多行数据变成一行 F1=INDEX($A$1:$E$21,ROUNDUP(COLUMN()/5,0),COLUMN()-5*(ROUNDUP(COLUMN()/5,0)-1))向后拉 ...

  10. Excel如何快速将多行数据转为一行

    今天跟大家分享一下Excel如何快速将多行数据转为一行 1.表格文件中含有多行数据,现在我们想要将这些数据转为一行显示 2.首先我们选中单元格区域 3.点击下图选项(Excel工具箱,百度即可了解详细 ...

最新文章

  1. 这几个模型不讲“模德”,我劝它们耗子尾汁
  2. 不使用框架的web项目中配置log4j
  3. python怎么反转单链表_单链表反转python实现代码示例
  4. 嵌套高度问题_excel查找技巧:嵌套函数在区间查找中的应用解析
  5. 面试题 31 : 栈的压入、弹出序列
  6. Unix 网络编程 I/O 模型 第六章
  7. 信号集 信号屏蔽字/pending的处理
  8. python学习 第三篇 文件操作
  9. 学生信息管理系统详细设计文档
  10. XBuilder:Ext表单设计的完美实现
  11. Android SVN版本控制器
  12. Aspnet Mvc 前后端分离项目手记(一) 关于跨域问题(还有前言)
  13. CAJ转Word有哪些既免费还不限制页数的转换工具?
  14. 论文笔记:Mind the Gap An Experimental Evaluation of Imputation ofMissing Values Techniques in TimeSeries
  15. 2019网络直播稳中有变:直播带货火出圈 5G带来弯道超车新机会
  16. REDO文件损坏修复
  17. DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATION error
  18. 巧用Excel 的vlookup()核验对比数据
  19. 沈阳地铁行业运行状况与发展模式调研报告2022版
  20. 利用基于注意力的神经网络绘制化学反应空间图谱

热门文章

  1. 最简洁的PHP把PHP生成HTML代码
  2. IDEA SpringBoot工程配置热部署
  3. 震惊!人工智能已经发展到这个地步了
  4. 厌倦 VMware,试试更轻量级的虚拟机!
  5. 数据架构总体设计方案
  6. 2个月面了鹅厂的5个部门,心态差点奔溃了......
  7. spring 事务隔离级别和传播行为_Spring 事务传播行为
  8. micropython文件上传软件_4-3 为NodeMCU刷入MicroPython固件
  9. mysql基础之mariadb概念
  10. JAVA Httpclient3.x与Httpclient4.x代码对比(post方法)