for xml path以及sql合并查询】的更多相关文章

sql中for xml path的用法. http://www.cnblogs.com/yanghaibo/archive/2010/06/04/1751405.html…
原文: http://njm.iteye.com/blog/795881 --使用 自连接.for xml path('')和stuff合并显示多行数据到一行中 --注 --1.计算列可以不用包含在聚合函数中而直接显示,如下面语句的val. --2.for xml path('') 应该应用于语句的最后面,继而生成xml. --3.for xml path('root')中的path参数是生成的xml最顶级节点. --4.字段名或是别名将成为xml的子节点,对于没有列名(字段+'')或是没有别名…
在使用js报表工具的时候,常常需要提供json数据进行显示, 在sql查询的时候就需要构造合适的查询结果出来; 就用到了合并两个没有关联关系的表数据, SELECT SUM(a1.amount) AS amount, a1.date FROM ((SELECT SUM(amount) AS amount, DATE_FORMAT(time,'%Y-%m-%d') AS date FROM a GROUP BY date) UNION ALL (SELECT -SUM(b.VALUE) AS s2…
select IFNULL(c.nodeCount,0) + IFNULL(c.phyCount,0) as totalCount from ( select count(*) nodeCount, (select count(*) from rn_base a join rn_ext_systeminfo b on a.id = b.nodeId where (a.subType = 'VIRTUAL' or a.subType = 'PHYSICAL')) phyCount from rn_…
经常在论坛看到高手使用了 for xml path,由于是搜索一下,记录了详细的使用方法.在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用示例. )); ,'a') ,'b') 运行这段脚本 select UserID,UserName from @TempTable FOR XML PATH 将生成如下结果: <row> <UserID>1</UserID>  <UserName>a</U…
SQL Server中有提供一个FOR XML PATH的子句(不知道能不能叫函数),用来将查询结果行输出成XML格式,我们可以通过这个语法做一些变通实现一些特定的功能,比如说行转列.要会变通的话,当然首先是要知道FOR XML PATH的语法. FOR XML PATH的简单语法 假设有一个hobby表(爱好),表中有两个字段,一个是hobbyID(爱好id),一个是hName(爱好名称). 这样,我们执行一条最简单的带FOR XML PATH子句的SQL语句,看看查询出来的结果. SELEC…
本篇主要讲怎么利用SQL的FOR XML PATH 参数来进行字符串拼接,FOR XML PATH的用法很简单,它会以xml文件的形式来返回数据. 我的讲解步骤: 1:构造初始数据 2:提出问题 3:简单介绍FOR XML PATH 4:解答问题 1.构造初始数据 举出一个经典的学生课程例子,共有学生.课程与学生课程三张表. 表1:Student student_id student_name 1 张三 2 李四 3 王五 表2:Course course_id course_name 1 语言…
1.STUFF SQL Server之深入理解STUFF sql stuff函数用于删除指定长度的字符,并可以在制定的起点处插入另一组字符.sql stuff函数中如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串.如果要删除的长度大于第一个字符串的长度,将删除到第一个字符串中的第一个字符. STUFF(<character_expression>,<开始>,<长度>,<character_expression>) <开…
stuff(select ',' + fieldname from tablename for xml path('')),1,1,'') 这一整句的作用是将多行fieldname字段的内容串联起来,用逗号分隔.例如表fieldname-----------AAABBBCCC串联之后就是字符串: AAA,BBB,CCCfor xml path是SQL Server 2005以后版本支持的一种生成XML的方式.具体如何使用,请参考联机丛书.stuff函数的作用是去掉字符串最前面的逗号分隔符. --…
FOR XML PATH 方法是用于将查询结果集以XML形式展示,这样展示方式的好处不言而喻.现在我要介绍的FOR XML PATH的"另类"用法. 首先,我们先来看看它的正常用法.下图是我们用到的一张TEST_PERSON表: 用FOR XML PATH方法查询,SQL语句如下: SELECT * FROM TEST_PERSON FOR XML PATH 显示结果如下: 展开结果可以看到如下图: 神奇吧!!!!细心的同学会注意到这个XML文件的行节点是<row>,如果需…
-------------------------(情景描述) 在我们处理数据时,可能会碰到这种情景: Id                Name 1                  a,b 2                  a 1                  a,b,c 对于上面的表数据要求合并同类项Name,得到结果: 1                  a,b,c 2                  a -------------------------(解决方案) 我们…
docs.microsoft.com 链接:  SQL一个应用场景与FOR XML PATH应用 首先呢!我们在增加一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号,sName代表学生姓名,hobby列存学生的爱好!那么现在表结构如下: 这时,我们的要求是查询学生表,显示所有学生的爱好的结果集,代码如下: SELECT B.sName,LEFT(StuList,LEN(StuList)-) as hobby FROM ( SELECT sName, (SELEC…
[原地址] for xml path作用:将多行的查询结果,根据某一些条件合并到一行. 例:现有一张表 执行下面语句 select Department, (SELECT Employee+',' FROM People b WHERE b.Department=a.Department For XML Path('')) Student from People as a group by Department 得如下结果…
由于项目的原因,需要将一些记录分类汇总,但还要列出相关的明细,这样的需求我还是第一次遇到,蛋疼了,还是请求一下度娘吧.搜索一番还是有结果,请看以下例子: create table tb ([id] int,[name] varchar(2))insert into tbselect 1,'aa' union allselect 2,'bb' union allselect 1,'cc' union allselect 3,'dd' union allselect 2,'ee' select *…
for xml path,其实它就是将查询结果集以XML形式展现 双击打开…
SELECT 字段=(SELECT b.合并字段+',' FROM 表一 AS b WHERE b.相同条件=a.相同条件 FOR XML PATH('')) FROM 表一 AS a DECLARE @temp TABLE (caccount VARCHAR(50), icaccount VARCHAR(50))INSERT INTO @tempSELECT a.caccount,b.caccount AS icaccount FROM op_client_main_caccount aLEF…
转自: http://www.cnblogs.com/aolin/archive/2011/04/12/2014122.html 示例表 tb 数据如下 id value—————1 aa1 bb2 aaa2 bbb2 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 aa…
示例表 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]=( SEL…
两种方式,效率立竿见影 ------------------------------------------------ SET STATISTICS TIME ON DECLARE @OrderStr NVARCHAR(max) = ''; SELECT @OrderStr += a.SerialNumber+',' FROM dbo.WithdrawalsLog a SET STATISTICS TIME OFF ---------------------------------------…
for xml path 用于合并与拆分 1.合并 很多时候需要在SQL Server中创建逗号分隔列表.这可以使用SQL Server的DOR XML PATH功能完成.与select语句一起使用时,FOR XML PATH生成一个xml.其示例如下所示.   1 2 3 4 5 6 DECLARE @tb TABLE(sno int identity,col1 varchar(10))   INSERT INTO @tb VALUES('a'),('b'),('c'),('d')   SEL…
SQL 列转行,即多行合并成一条   需求:按照分组,将多条记录内容合并成一条,效果如下: 数据库示例: CREATE TABLE [t2]([NID] [bigint] NULL,[district] [nvarchar](255) NULL,[town] [nvarchar](255) NULL); insert into t2 values(1,'淮上区','曹老集镇'); insert into t2 values(2,'淮上区','淮滨街道'); insert into t2 valu…
sql 合并行使用的两个函数记录: SELECT CityName,STUFF((SELECT ',' + UserName FROM table1 subTitle WHERE CityName=A.CityName FOR XML PATH('')),1, 1, '') AS A FROM tabl1 A GROUP BY CityName stuff: 1.作用 stuff(param1, startIndex, length, param2)将param1中自startIndex(SQL…
有时为避免循环操作数据库.列表展示等一些原因需要将数据及关联数据批量加载进行集中处理,一种解决办法可以使用FOR XML PATH将多行数据合并成一列,达到字段拼接的效果.例如有两个表, 部门表T_Dept: 员工表T_Emp: 需要查询每个部门下的员工姓名,查询语句: 1 SELECT ROW_NUMBER() OVER (ORDER BY DeptId) AS Row, DeptName 2 , LEFT(A.EmpName, LEN(A.EmpName) - 1) AS EmpName 3…
=================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮箱(wlsandwho@foxmail.com)”联系我 勿用于学术性引用. 勿用于商业出版.商业印刷.商业引用以及其他商业用途. 本文不定期修正完善. 本文链接:http://www.cnblogs.com/wlsandwho/p/5039358.html 耻辱墙:http://www.cnblo…
使用sql stuff函数 /*         stuff(param1, startIndex, length, param2)说明:将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后用param2替换删掉的字符.*/ 示例: select  po_no = stuff((select ';' + 字段 from 表 t where 查询条件 for xml path('')) , 1 , 1 , '')…
经常遇到统计报表中,子表记录合并为一个字段的情况.例如:省表中各省经济水平前五的城市统计. 有如下两表:dbo.省 和 dbo.市 (好吧,你可能会吐槽为什么用中文表名,其实我是为了方便查找替换) 这里暂时不考虑经济水平前五这种外部条件,期望将所有城市使用中文逗号拼接起来,如图: 具体做法如下: --基于子表查询 SELECT P.Name AS '省', ,,'') AS '市' FROM dbo.市 C LEFT JOIN dbo.省 P ON C.Parent = P.Code GROUP…
sql中经常需要把多个行数据合成一行下面是利用 FOR XML PATH来实现的简单介绍. 1,把图一的转换为图二: SELECT articleID, (),tagID)+',' FROM articleTag_tb FOR XML PATH('')) AS tagID FROM articleTag_tb GROUP BY articleID 以上是一个表的,下面看看多表关联的做法,其实是一样的只是连接表查询这是一个文章对应多个标签的例子三张表: CREATE TABLE [dbo].[ar…
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主. 这是一张存放员工的任务表(数据乱填的,表也是随意建的)…
XQuery 是一个浏览/返回XML实例的标准语言. 它比老的只能简单处理节点的XPath表达式更丰富. 你可以同XPath一样使用.或是遍历所有节点,塑造XML实例的返回等. 作为一个查询语言, 你需要一个查询处理引擎. SQL Server 数据库通过XML数据类型方法的T-SQL 语句来处理XQuery. SQL Server 并不支持所有的XQuery 特性.比如XQuery 的用户自定义函数就不支持,因为你可以用T-SQL和CLR函数 .此外, T-SQL 支持非标的XQuery扩展…
原文:SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF 本来用 Writer 写一篇关于一列多行合并的博客来的,结果快写完了时候,在一个插入代码时候,崩了,重新打开,居然连草稿都没有……哎,我也是无语了…… 于是没有心情再写,直接发一下代码,再顺便留几个其他博文的链接 1.FOR XML PATH http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html 2.STUFF http://www…