在常用的关系型数据库中,经常需要去实现数据记录合并,比如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。内容未经允许不得转载,或转载时需注明来源: 创新互联