sql for xml 拼接相同类的列数据

数据库中记录着员工的工作经历,一个经历一条数据,现有一个需求要Excel导出员工的工作经历,所以就得把工作经历拼接在一起

测试的数据表如下

需要处理得到的结果如下(多个经历用了逗号隔开):

SQL语句:

SELECT empID, LEFT(workExperience,LEN(workExperience)-1) AS workExperience  FROM (
 SELECT empID,(SELECT Experience++‘,‘ FROM dbo.Employee WHERE empID =A.empid FOR XML PATH(‘‘))AS workExperience
 FROM dbo.Employee A GROUP BY A.empID
)B

Select 的查询结果会作为行集返回,但是你同样可以在sql中指定for xml子句使得查询作为xml来检索。在for xml子句中,可以指定以下模式之一:RAW 、AUTO、EXPLICIT和PATH

RAW模式:

SELECT TOP 3 id,NAME,ClientCode FROM dbo.Customer FOR XML RAW

结果:

<row id="94" NAME="1st paygateway.net" ClientCode="C-NA-TL-0063" />
<row id="95" NAME="3D NURI CO LTD" ClientCode="C-AS-TL-0049" />
<row id="96" NAME="3-D TV" ClientCode="C-NA-TL-0064" />

RAW模式:

SELECT TOP 3 id,NAME,ClientCode FROM dbo.Customer FOR XML AUTO

结果:

<dbo.Customer id="94" NAME="1st paygateway.net" ClientCode="C-NA-TL-0063" />
<dbo.Customer id="95" NAME="3D NURI CO LTD" ClientCode="C-AS-TL-0049" />
<dbo.Customer id="96" NAME="3-D TV" ClientCode="C-NA-TL-0064" />

相关的sql for xml 可参考:http://www.cnblogs.com/kenshincui/archive/2011/12/31/2309217.html

时间: 2024-08-02 19:44:57

sql for xml 拼接相同类的列数据的相关文章

SQL Server FOR XML PATH 语句的应用---列转行

经常在论坛看到高手使用了 for xml path,由于是搜索一下,记录了详细的使用方法.在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用示例. DECLARE @TempTable table(UserID int , UserName nvarchar(50));insert into @TempTable (UserID,UserName) values (1,'a')insert into @TempTable (UserID

SQL FOR XML

原文:SQL FOR XML 摘要:sql中的for xml语法为表转化为xml提供了很好的支持,当然使用同样的程序语言也能够达到同样的效果,但是有了for xml将使得这一切更加的方便. 主要内容: Select 的查询结果会作为行集返回,但是你同样可以在sql中指定for xml子句使得查询作为xml来检索.在for xml子句中,可以指定以下模式之一:RAW .AUTO.EXPLICIT和PATH. RAW模式返回行为元素,每一列的值作为元素的属性:AUTO模式返回表名为节点的元素,每一列

不同数据库中两列字段相减(某列有空值)

数据库中两个字段相减(某列有空值)处理方法: sql server中:select (isnull(字段1,0)-isnull(字段2,0)) as 结果 from 表 oracle中:select (nvl(字段1,0)-nvl(字段2,0)) as 结果 from 表 mysql中:select (ifnull(字段1,0)=ifnull(字段2,0)) as 结果 from 表 不同数据库中两列字段相减(某列有空值),码迷,mamicode.com

向SQL Server 现有表中添加新列并添加描述.

注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先附上存储过程然后解释) 代码 /********调用方法********** 作用: 添加列并添加列描述信息 调用: exec [SetColumnInfo] '表名', '列名', N'列说明,描述','列类型{默认:NVARCHAR(50)}','列默认值{默认:NULL}' *********

SQLSqlserver中如何将一列数据,不重复的拼接成一个字符串

把一列数据拼接成一个字符串比较简单: declare @test varchar(500) set @test=''; select @[email protected]+name+',' from person select @test 但是如果数据中有重复选项,想去掉重复的就比较绕弯了. declare @test varchar(500) set @test=''; select distinct @test=@test+name+',' from person select @test

将SQL for xml path(&#39;&#39;)中转义的字符正常显示

将SQL for xml path('')中转义的字符正常显示 在工作中出现的发送邮件的时候:因为邮件内容中有链接,并且多个拼接在一起的,于是用了for xml path().        但是,这样显示出来的链接时会将路径中的<,>,&符号转义为< > & 这样显示的路径在邮件中是不能进行链接的.         在网上查了很多资料后终于找到了一种方法:...FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)') 如下

SQL对Xml字段的操作

原文:SQL对Xml字段的操作 T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB). 用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中.

在SQL Server 2014里可更新的列存储索引 (Updateable Column Store Indexes)

传统的关系数据库服务引擎往往并不是对超大量数据进行分析计算的最佳平台,为此,SQL Server中开发了分析服务引擎去对大笔数据进行分析计算.当然,对于数据的存放平台SQL Server数据库引擎而言,也是需要强大的数据处理能力的. 在SQL Server 2012时,SQL Server 引入了列存储索引,用以显著提供高传统数据仓库类型语句的性能,并在SQL Server 2014中做了进一步加强.本文将在对SQL Server 2012列存储索引简单介绍的基础上,进一步解释SQL Serve

SQL 分组后拼接字符串

with t as( select 'Charles' parent, 'William' child union select 'Charles', 'Harry' union select 'Anne', 'Peter' union select 'Anne', 'Zara' union select 'Andrew', 'Beatrice' union select 'Andrew', 'Eugenie' ) SELECT parent, STUFF( ( SELECT ','+ chil