sql for xml 还有一种写法(採用 tag 与 union all,简洁易懂)
sql for xml 还有一种写法(採用 tag 与 union all,简洁易懂)
測试环境:sql 08, 08 R2, 2010, 2012, 2014 等
declare @agent table
(
AgentID int,
Fname varchar(5),
SSN varchar(11)
) insert into @agent
select 1, 'Vimal', '123-23-4521' union all
select 2, 'Jacob', '321-52-4562' union all
select 3, 'Tom', '252-52-4563' declare @address table
(
AddressID int,
AddressType varchar(12),
Address1 varchar(20),
Address2 varchar(20),
City varchar(25),
AgentID int
) insert into @address
select 1, 'Home', 'abc', 'xyz road', 'RJ', 1 union all
select 2, 'Office', 'temp', 'ppp road', 'RJ', 1 union all
select 3, 'Home', 'xxx', 'aaa road', 'NY', 2 union all
select 4, 'Office', 'ccc', 'oli Com', 'CL', 2 union all
select 5, 'Temp', 'eee', 'olkiu road', 'CL', 2 union all
select 6, 'Home', 'ttt', 'loik road', 'NY', 3 --SELECT
-- 1 AS Tag,
-- NULL AS Parent,
-- 0 AS 'Agents!1!Sort!hide',
-- NULL AS 'Agents!1!',
-- NULL AS 'Agent!2!AgentID',
-- NULL AS 'Agent!2!Fname!Element',
-- NULL AS 'Agent!2!SSN!Element',
-- NULL AS 'AddressCollection!3!Element',
-- NULL AS 'Address!4!!xml',
-- NULL AS 'Address!4!AddressType!Element',
-- NULL AS 'Address!4!Address1!Element',
-- NULL AS 'Address!4!Address2!Element',
-- NULL AS 'Address!4!City!Element'
--UNION ALL
-- SELECT
-- 2 AS Tag,
-- 1 AS Parent,
-- AgentID * 100,
-- NULL, AgentID, Fname, SSN,
-- NULL, NULL, NULL, NULL, NULL, NULL
--FROM @Agent
--UNION ALL
-- SELECT
-- 3 AS Tag,
-- 2 AS Parent,
-- AgentID * 100 + 1,
-- NULL,NULL,NULL,
-- NULL,
-- NULL,
-- NULL, NULL, NULL, NULL, NULL
--FROM @Agent
--UNION ALL
--SELECT
-- 4 AS Tag,
-- 3 AS Parent,
-- AgentID * 100 + 2,
-- NULL, NULL, NULL, NULL, NULL,
-- '<!-- ' + AddressType + ' Address -->', AddressType,
-- Address1, Address2, City
--FROM @Address
--ORDER BY [Agents!1!Sort!hide]
--FOR XML EXPLICIT SELECT
1 AS Tag,
NULL AS Parent,
NULL AS [Agents!1!],
NULL AS [Agent!2!AgentID],
NULL AS [Agent!2!Fname!Element],
NULL AS [Agent!2!SSN!Element],
NULL AS [AddressCollection!3!Element],
NULL AS [Address!4!AddressType!Element],
NULL AS [Address!4!Address1!Element],
NULL AS [Address!4!Address2!Element],
NULL AS [Address!4!City!Element] UNION ALL SELECT
2 AS Tag,
1 AS Parent,
NULL, AgentID, Fname, SSN,
NULL,NULL, NULL, NULL, NULL
FROM @Agent UNION ALL SELECT
3 AS Tag,
2 AS Parent,
NULL,AgentID,NULL, NULL,
NULL, NULL, NULL, NULL, NULL FROM @Agent UNION ALL SELECT
4 AS Tag,
3 AS Parent,
NULL,AgentID,NULL,NULL,NULL,
AddressType, Address1, Address2, City FROM @Address ORDER BY
-- all properties of every agent
-- (from tag 2 and 4: SSN, fname and adresses)
-- will be sorted by agentID and combined into
-- separate groups. It is necessary in same cases.
[Agent!2!AgentID],
[AddressCollection!3!Element], -- optional because NULL everywhere
[Address!4!AddressType!Element]-- any ordering by elements of tag 4 FOR XML EXPLICIT
执行结果:
文章来源:http://social.msdn.microsoft.com/Forums/sqlserver/zh-CN/97f79941-324e-479e-ba5b-851cc534ebe5/problem-in-for-xml-explicit-query?
forum=sqlxml
sql for xml 还有一种写法(採用 tag 与 union all,简洁易懂)的更多相关文章
- sql 存储过程 in 的两种写法
最近又忘记存储过程 除了exec 动态写法的另外一种,这里记录一下,方便查找 写法1,动态语句 CREATE PROCEDURE sp_CountShiftWish @strids varchar ( ...
- mybatis-plus 自定义SQL,XML形式,传参的几种方式
mybatis-plus 自定义SQL,XML形式,传参的几种方式 前提说明 所涉及文件 传参类型说明 1.Java代码中使用QueryWrapper动态拼装SQL 2.简单类型参数(如String, ...
- sql语句有几种写法
sql语句有几种写法 1:SELECT * FROM tablename ORDER BY RAND() LIMIT 想要获取的数据条数: 2:SELECT *FROM `table` WHERE i ...
- SQL Server 存储过程的几种常见写法分析,我们该用那种写法
本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种 ...
- Sql语句模糊查询字符串的两种写法
Sql语句模糊查询有两种写法,一种是在jdbcTemplate的查询方法参数里拼接字符串%,一种是在Sql语句里拼接%字符串. public class IsNameDaoImpl implement ...
- Android开发系列之button事件的4种写法
经过前两篇blog的铺垫,我们今天热身一下,做个简单的样例. 文件夹结构还是引用上篇blog的截图. 详细实现代码: public class MainActivity extends Activit ...
- 关于MyBatis的两种写法
刚接触MyBatis是在Jike的视频中学习的,但是之后又发现和项目中的MyBatis的用法不太一致.上网找了好多资料,发现网上的教程分为两种写法: 第一种,是jike视频中的写法,写好map.xml ...
- Android笔记---点击事件的四种写法
Android 点击事件的四种写法: 1. 以内部类的形式实现 OnClickListener 接口.定义点击事件 class MainActivity extents Activity{ // .. ...
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...
随机推荐
- position记录
1. relative(相对定位):生成相对定位的元素,通过top,bottom,left,right的设置相对于其正常(原先本身)位置进行定位.可通过z-index进行层次分级.均是以父级的左上角 ...
- C#调用C++生成的动态链接库DLL
一.背景 由于要使用C#写app,所以要把C++生成的DLL在C#中调用,所以就涉及怎样去调用外部的dll问题. 二.C#调用外部DLL 首先先看下C#调用外部DLL的代码 using System. ...
- JavaScript学习总结(6)——js弹出框、对话框、提示框、弹窗总结
一.JS的三种最常见的对话框 [javascript] view plaincopy //====================== JS最常用三种弹出对话框 =================== ...
- ecshop微信接口基础认识
ecshop微信接口基础认识,当你要学习ecshop和微信整合的时候,你就必须研究ecshop的数据结构对接以及微信数据接口的基本知识.我们知道微信其实就是通过有效的消息推送,用JSON格式的数据或者 ...
- 洛谷—— P1080 国王游戏
https://www.luogu.org/problem/show?pid=1080 题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整 ...
- ubuntu-系统密匙
1.安装虚拟机xp,需要密匙,网上搜了一个,验证能用 MRX3F-47B9T-2487J-KWKMF-RPWBY 2.安装vm也需要密匙,如下可用 HC6JC-FPJ4M-RZM61-48852-2A ...
- actionbar-displayOptions 属性分析
displayOptions 这个属性主要是控制这actionbar 上返回按钮.标题等的显示.它作为 actionBarStyle 的一个item,如下 <style name="A ...
- 3. ZAB与Paxos算法的联系与区别。
转自:https://blog.csdn.net/en_joker/article/details/78665809 ZAB协议并不是Paxos算法的一个典型实现,在讲解ZAB和Paxos之间的区别之 ...
- Flask项目之手机端租房网站的实战开发(十二)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...
- JS预解释的总结
预解释阶段发生在创建了堆内存,让代码执行之前,对当前作用域中带var和function的进行预解释 在浏览器解析执行代码的时候,会提前把带var和function的代码声明或定义,提前放在作用域的最前 ...