合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
示例表 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函数相关推荐
- Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC & ...
- Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...
- php 查询数据表第2条,PHP 连接 MySQL 数据库的连接函数 mysql_connect 的第二个参数是( )。...
问题:PHP 连接 MySQL 数据库的连接函数 mysql_connect 的第二个参数是( ). 更多相关问题 下图中ACB为晨昏线,C地点位于格陵兰岛上.回答(1)--(3)题.(1)飞机从A点 ...
- 使用自连接、for xml path('')和stuff合并显示多行数据到一行中(转)
原文: http://njm.iteye.com/blog/795881 --使用 自连接.for xml path('')和stuff合并显示多行数据到一行中--注 --1.计算列可以不用包含在聚合 ...
- 使用 FOR XML PATH 合并SQL Server查询结果的重复行
参考资料: http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html http://www.cnblogs.com/code ...
- SQLSERVER将子查询数据合并拼接成一个字段
业务场景: 有两张表,部门表和员工表 部门表: 部门编码 部门名称 1 A 2 ...
- 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 ...
- 利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符
T-sql 有一个for xml path('')的从句能把多行结果合并到一行,并成为xml 格式 比如有一张表tb有两列,其格式和数据为: id value ----- 1 aa 1 bb 2 aa ...
- 怎么把好几行弄成一行_怎么把excel表格里多行变成一行数据|excel表格中让多行内容变成为一行...
excel怎么把多行数据变成一行 F1=INDEX($A$1:$E$21,ROUNDUP(COLUMN()/5,0),COLUMN()-5*(ROUNDUP(COLUMN()/5,0)-1))向后拉 ...
- Excel如何快速将多行数据转为一行
今天跟大家分享一下Excel如何快速将多行数据转为一行 1.表格文件中含有多行数据,现在我们想要将这些数据转为一行显示 2.首先我们选中单元格区域 3.点击下图选项(Excel工具箱,百度即可了解详细 ...
最新文章
- 这几个模型不讲“模德”,我劝它们耗子尾汁
- 不使用框架的web项目中配置log4j
- python怎么反转单链表_单链表反转python实现代码示例
- 嵌套高度问题_excel查找技巧:嵌套函数在区间查找中的应用解析
- 面试题 31 : 栈的压入、弹出序列
- Unix 网络编程 I/O 模型 第六章
- 信号集 信号屏蔽字/pending的处理
- python学习 第三篇 文件操作
- 学生信息管理系统详细设计文档
- XBuilder:Ext表单设计的完美实现
- Android SVN版本控制器
- Aspnet Mvc 前后端分离项目手记(一) 关于跨域问题(还有前言)
- CAJ转Word有哪些既免费还不限制页数的转换工具?
- 论文笔记:Mind the Gap An Experimental Evaluation of Imputation ofMissing Values Techniques in TimeSeries
- 2019网络直播稳中有变:直播带货火出圈 5G带来弯道超车新机会
- REDO文件损坏修复
- DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATION error
- 巧用Excel 的vlookup()核验对比数据
- 沈阳地铁行业运行状况与发展模式调研报告2022版
- 利用基于注意力的神经网络绘制化学反应空间图谱
热门文章
- 最简洁的PHP把PHP生成HTML代码
- IDEA SpringBoot工程配置热部署
- 震惊!人工智能已经发展到这个地步了
- 厌倦 VMware,试试更轻量级的虚拟机!
- 数据架构总体设计方案
- 2个月面了鹅厂的5个部门,心态差点奔溃了......
- spring 事务隔离级别和传播行为_Spring 事务传播行为
- micropython文件上传软件_4-3 为NodeMCU刷入MicroPython固件
- mysql基础之mariadb概念
- JAVA Httpclient3.x与Httpclient4.x代码对比(post方法)