首页 > 代码库 > MSSQL将多行单列变一行一列并用指定分隔符分隔,模拟Mysql中的group_concat

MSSQL将多行单列变一行一列并用指定分隔符分隔,模拟Mysql中的group_concat

-- 将多行记录(只能一个列)用指定分隔符分隔IF(OBJECT_ID(sp_RowsChangeClosBySplit,NP) IS NOT NULL)    DROP PROC sp_RowsChangeClosBySplitGOCREATE PROC sp_RowsChangeClosBySplit@table nvarchar(50),            -- 表名@field nvarchar(50),            -- 要拼接的字段@split varchar(10)=,,            -- 分隔符@where nvarchar(500)=‘‘    -- 条件ASBEGIN DECLARE @sql NVARCHAR(1000)SET @sql=select TOP 1 stuff((select ‘‘‘+@split+‘‘‘+convert(varchar(50),+@field+) from +@table+ +@where+ FOR XML PATH(‘‘‘‘)), 1, 1, ‘‘‘‘) as cols from +@table+ group by +@fieldPRINT @sqlEXEC sp_executesql @sqlEND 

调用:

EXEC dbo.sp_RowsChangeClosBySplit @table = Npro_Household, -- nvarchar(50)    @field = NID, -- nvarchar(50)    @split = ,, -- varchar(10)    @where = Nwhere id < 10 -- nvarchar(500)

分割后:结果集:

普通查询:

SELECT ID FROM dbo.pro_Household WHERE ID<10  

分割钱:结果集

MSSQL将多行单列变一行一列并用指定分隔符分隔,模拟Mysql中的group_concat