MSSQL如何优雅合并多行记录(mssql 合并多行)

在常用的关系型数据库中,经常需要去实现数据记录合并,比如MSSQL。但是,如何优雅的去实现多行记录的快速灵活合并?

首先,可以使用CTE,通过CTE来实现多行记录的快速灵活合并。

以下是一个示例,可以使用CTE对Table1合并成一行:

–使用CTE进行数据合并

WITH CTE As

(

SELECT

ROW_NUMBER() OVER (PARTITION BY p.CompanyID, p.OrderNumber ORDER BY p.OrderNumber) AS Rn,

p.CompanyID,

p.OrderNumber,

p.ProductName

FROM Table1 As p

)

SELECT

CompanyID,

OrderNumber,

STUFF((

SELECT ‘,’ + ProductName

FROM CTE

WHERE CTE.rn = T.rn

FOR XML path(”),TYPE

).value(‘(./text())[1]’,’VARCHAR(MAX)’)

,1,1,”) AS ProductName

FROM CTE As T

GROUP BY CompanyID,

OrderNumber,

Rn

此外,可以使用FOR XML PATH方式,通过把列中的每条记录拼接在一起,合并到一行记录中去。

以下是一个示例,可以使用FOR XML PATH来实现把Table1中的记录拼接到一行:

–使用 FOR XML PATH的方式进行数据合并

SELECT DISTINCT

p.CompanyID,

p.OrderNumber,

STUFF((

SELECT ‘,’ + p.ProductName

FROM Table1 AS p

where p.CompanyID = p2.CompanyID

and p.OrderNumber = p2.OrderNumber

FOR XML PATH(”)

),1,1,”) AS [List]

FROM Table1 AS p2

以上两种方式的优势都很明显,都可以方便快捷把多行记录快速灵活合并。

总结一下,MSSQL如何优雅合并多行记录:

– 使用CTE来对多行记录快速灵活合并;

– 使用FOR XML PATH来把多行记录拼接到一行。

成都服务器租用选创新互联,先试用再开通。
创新互联(www.cdcxhl.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。物理服务器托管租用:四川成都、绵阳、重庆、贵阳机房服务器托管租用。

网页题目:MSSQL如何优雅合并多行记录(mssql 合并多行)
链接URL:http://www.shufengxianlan.com/qtweb/news27/462177.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联