`
k_lb
  • 浏览: 796501 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

SQL中FOR XML PATH 语句[可用于分组统计]

 
阅读更多

FOR XML PATH 语句 :(应该在sql2005及以上版本才能用)

declare @t table(id int,name varchar)
insert into @t(id,name) values(1,'a')
insert into @t(id,name) values(2,'b')

select id,name from @t for xml path

运行结果如下:

<row>
  <id>1</id>
  <name>a</name>
</row>
<row>
  <id>2</id>
  <name>b</name>
</row>


select id,name from @t for xml path('node')

运行结果如下:

<node>
  <id>1</id>
  <name>a</name>
</node>
<node>
  <id>2</id>
  <name>b</name>
</node>


下面我要做一个分组统计:

declare @student table(class varchar(10),name varchar(10))
insert into @student(class,name) values('1班','张三')
insert into @student(class,name) values('2班','李四')
insert into @student(class,name) values('1班','王五')
insert into @student(class,name) values('2班','郭佳')
insert into @student(class,name) values('3班','吴亮')

select 
class,
STUFF((select ','+name from @student where class=stu.class for xml path('')),1,1,'') names 
from @student stu
group by class
order by class


运行结果如下:

1班 张三,王五
2班 李四,郭佳
3班 吴亮

同样的效果还可以换一种方式实现:

select class,RIGHT(names,LEN(names)-1) from
(
	select 
	class,
	(select ','+name from @student where class=stu.class for xml path('')) names 
	from @student stu
	group by class
	
) stu
order by class


运行结果如下:

1班 张三,王五
2班 李四,郭佳
3班 吴亮

STUFF用法

1、作用

删除指定长度的字符,并在指定的起点处插入另一组字符。

2、语法

STUFF ( character_expression , start , length ,character_expression )

3、示例

以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串

SELECT STUFF('abcdef', 2, 3, 'ijklmn')
GO

下面是结果集

aijklmnef



分享到:
评论

相关推荐

    SQL Server FOR XML PATH 语句的应用

    在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用示例。…………

    sqlserver FOR XML PATH 语句的应用

    大家都知道在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用示例。

    显示同一分组中的其他元素的sql语句

    理想查询表结果 一很牛的朋友写的sql语句大笑,学习啦偷笑: select userpwd,username=stuff((select ‘,’+username from tuser t1 where t1.userpwd=t.userpwd for xml path(”)),1,1,”) from tuser t group by ...

    表的相关查询(最全面的查询语句集合)

    --4、FOR XML PATH 语句的应用 --5、一些有用的系统存储过程及用法 --6、关于死锁 --7、添加远程服务器 --8、日期的相关操作 --字符转换为日期时,Style的使用 --复杂年月处理 --日期格式化处理 --日期推算处理 --...

    根据数据库sql生成java代码代码生成器

    1、本地执行代码生成工具,可生成controller、service、...3、可按照资源中提供的建表sql导入到数据库,然后双加start.bat,即可在上方配置的outdir目录中找到生成的代码 4、复制代码到项目目录修修改改即可使用

    Microsoft SQL Server 2005 Express Edition SP3

    本节介绍有关安装 .NET Framework 2.0、SQL Server Express 以及可用于连接到 SQL Server Express 的工具的信息。 2.1 .NET Framework 2.0 在安装 SQL Server Express 之前,必须安装 .NET Framework 2.0。 SQL ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 349 第11章 开发线程安全的servlet 350 11.1 多线程的servlet模型 350 11.2 线程安全的servlet 351 11.2.1 变量...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 349 第11章 开发线程安全的servlet 350 11.1 多线程的servlet模型 350 11.2 线程安全的servlet 351 11.2.1 变量...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 349 第11章 开发线程安全的servlet 350 11.1 多线程的servlet模型 350 11.2 线程安全的servlet 351 11.2.1 变量...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 349 第11章 开发线程安全的servlet 350 11.1 多线程的servlet模型 350 11.2 线程安全的servlet 351 11.2.1 变量...

    C#常用公共类源码(100多个)可以直接使用.rar

    ,RDLC直接打印帮助类,ResourceManager,RMB,SqlHelper,SQL语句拦截器,URL的操作类,VerifyCode,XML操作类,上传下载,二维码操作类,共用工具类,其他,分词辅助类,分页 ,加密解密,压缩解压缩,各种验证帮助类,图片,图片操作...

    C#全能速查宝典

    1.3.5 for语句——循环语句 32 1.3.6 foreach语句——枚举一个集合的元素 33 1.3.7 goto语句——跳转到标签 34 1.3.8 if…else语句——条件判断语句 36 1.3.9 return语句——返回 38 1.3.10 switch case语句——条件...

    jbpm开发步骤

    3 、生成建表的 SQL 语句并建表 这个构建文件${jbpm.home}/db/build.xml包含了脚本 用来创建和删除数据库结构的操作。 进入到这个目录下,运行ant -p 可以获得更多细节。 你的数据库中创建表结构: 首先,更新${jbpm...

Global site tag (gtag.js) - Google Analytics