SQLSERVER利用FOR XML PATH实现分组拼接字符串
首先看一下数据结构表
IF(OBJECT_ID('tempdb..#tProduct')IS NOT NULL)
DROP TABLE #tProduct
SELECT * INTO #tProduct FROM(
SELECT 1 AS CatagoryID,1 AS ProductID,'aaa'AS ProductName
UNION
SELECT 1 AS CatagoryID,2 AS ProductID,'bbb'AS ProductName
UNION
SELECT 1 AS CatagoryID,3 AS ProductID,'ccc'AS ProductName
UNION
SELECT 2 AS CatagoryID,4 AS ProductID,'xxx'AS ProductName
UNION
SELECT 2 AS CatagoryID,5 AS ProductID,'yyy'AS ProductName
UNION
SELECT 2 AS CatagoryID,6 AS ProductID,'zzz'AS ProductName
)TEMP
--SELECT * FROM #tProduct
所需的查询结果
|
CatagoryID |
Products |
|
1 |
aaa,bbb,ccc |
|
2 |
xxx,yyy,zzz |
查询语句实现
SELECT DISTINCT T1.CatagoryID
,Products=REPLACE((SELECT ProductNameAS [data()] FROM #tProduct T2 WHERE T2.CatagoryID=T1.CatagoryID ORDER BY ProductID FOR XML PATH('')),' ',',')
FROM #tProduct T1 ORDER BY CatagoryID
讲解:请依次执行以下语句查看结果
更多关于FOR XML PATH 请参考msdn。
1、使用FOR XML PATH生成XML文档字符串
SELECT CatagoryID,ProductID,ProductName FROM #tProduct
FOR XML PATH('Products'),ROOT('root')
简化一下
SELECT ProductName FROM #tProduct
FOR XML PATH('')
2、使用data()去掉XML标签元素(这样就使得一列的值构成一个以空格为分隔符的字符串)
SELECT ProductName AS [data()] FROM #tProduct
FOR XML PATH('')
说明:通过使用 data() 作为列名, SELECT 语句将返回 ProductName 的列表。又由于FOR XML PATH(‘’) 指定了一个空字符串作为行元素名,因此不会生成元素
3、见最终的实现语句
SQLSERVER利用FOR XML PATH实现分组拼接字符串的更多相关文章
- 利用FOR XML PATH行转列(根据某字段分组,多行数据转成一行,并用逗号隔开)
CREATE TABLE #TEST(A VARCHAR(10) NULL,B VARCHAR(MAX) NULL) INSERT INTO #TESTSELECT 'A','A001'UNION A ...
- SqlServer 中 for xml path 相关
表结构: typename varchar(50) typedesc varchar(50) 示例 SQL 语句: SELECT '{"'+TypeName, '":"' ...
- 分组拼接字符串,GROUP_CONCAT
背景 一年过的很快,文中后来的两位员工 馮大 和 馮二 也要面对无情的 KPI 考核了,他们工作干的很不错,performance 分别是 4 和 5 新需求来了,静悄悄的来了!!! 领导想要查看每个 ...
- Oracle group by分组拼接字符串
select wm_concat(id),depon from test_1 group by depon
- 使用 SQL的 for xml path来进行字符串拼接
本篇主要讲怎么利用SQL的FOR XML PATH 参数来进行字符串拼接,FOR XML PATH的用法很简单,它会以xml文件的形式来返回数据. 我的讲解步骤: 1:构造初始数据 2:提出问题 3: ...
- sql 使用 FOR XML PATH实现字符串拼接
sql中经常需要把多个行数据合成一行下面是利用 FOR XML PATH来实现的简单介绍. 1,把图一的转换为图二: SELECT articleID, (),tagID)+',' FROM arti ...
- 二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增
一.sql新增后返回主键 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @@IDENTITY 2,返回 ...
- xml文件生成方式一(字符串拼接,将多实体类对象写入xml文件)
1.xml文件生成,拼接字符串使用StringBuffer或StringBuilder 2.拼接好后写入文件即可,将多个实体类写入xml文件 3.这种方式比较简单,但是操作也比较麻烦 4.下面是我的代 ...
- SQL Server FOR XML PATH 语句的应用---列转行
经常在论坛看到高手使用了 for xml path,由于是搜索一下,记录了详细的使用方法.在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用 ...
随机推荐
- DM8168 layout
我们学到了以前的系统板的教训,新的版本号DM8168烤... 一级:电源.DM8168.DDR3.FPGA.CPLD.Nandflash.USB.以太网络.SATA.JTAG等待. 的地面电源部充分. ...
- C#邮件收发
public class Mail { private string mailkey; private string mailSecret; public string mailFrom; publi ...
- MD5处理图片加密算法
Android MD5加密算与J2SE平台一模一样,由于Android 平台支持 java.security.MessageDigest这个包.实际上与J2SE平台一模一样. 首先: 输入一个Stri ...
- 【百度地图API】建立全国银行位置查询系统(二)——怎样为地图添加控件
原文:[百度地图API]建立全国银行位置查询系统(二)--怎样为地图添加控件 <摘要>你将在第二章中学会以下知识: 使用手写代码的利器——notepad++: 如何为地图添加控件——鱼骨. ...
- ArcEngine载入中SDE问题栅格数据
当直接加载矢量数据到IFeatureWorkspace接口可,但是,在装载门格当要传送的数据IRasterWorkspaceEx接口. 效果如下面的,对可以被添加到双击Globe在. watermar ...
- MapReduce的InputFormat学习过程
昨天,经过几个小时的学习.该MapReduce学习的某一位的方法的第一阶段.即当大多数文件的开头的Data至key-value制图.那是,InputFormat的过程.虽说过程不是非常难,可是也存在非 ...
- select查询原理
原文:select查询原理 我并非专业DBA,但做为B/S架构的开发人员,总是离不开数据库,一般开发员只会应用SQL的四条经典语句:select ,insert,delete,update.但是我从来 ...
- C++语言笔记系列之十二——C++的继承
C++的继承 1.继承方式 public(公有继承) 派生类中的成员能够訪问基类的public成员和protected成员,但不能訪问基类的private成员. 派生类的对象仅仅能訪问基类的publi ...
- asp.net JSON(一)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- Objective-C的动态特性
最近几年中涌现了大量的Objective-C开发者.有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语言 ...