mssql sqlserver 将多行数据合并为一行的三种方法分享


摘要:
下文讲述使用sql脚本将多行数据合并为一行的三种方法,如下所示:
实验环境:sql server


在一些数据库的应用中,我们常常需要将多行数据行合并为一行,然后提供给前端使用,如下:

例:
有一张数据表包含以下三行数据
人事部
行政部
财务部
现在需要我们将数据转换为
人事部,行政部,财务部


方法1:使用临时变量进行数据叠加

    
create table [maomao365.com]
(info nvarchar(20))
go

insert into [maomao365.com]
(info)values(N'人事部'),
(N'行政部'),
(N'财务部')
go


DECLARE @infoAll VARCHAR(MAX);
SELECT @infoAll = ISNULL(@infoAll+',','')+ info
FROM [maomao365.com]

SELECT @infoAll


go
truncate table [maomao365.com]
drop     table [maomao365.com]
  


方法2:使用for xml path 和stuff系统函数生成

 
    SELECT ',' + info  
    FROM [maomao365.com] for xml path('')

  


方法3:使用 STRING_AGG系统函数生成

 
    /*
    在sqlserver 2017中,我们可以使用系统函数  STRING_AGG 将多行数据合并为一行
    */ 
SELECT STRING_AGG(ISNULL(info,'N/A'), ',') 
FROM [maomao365.com]