码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2014-11-11 16:25:53      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   os   sp   for   div   

-- 将多行记录(只能一个列)用指定分隔符分隔
IF(OBJECT_ID(sp_RowsChangeClosBySplit,NP) IS NOT NULL)
    DROP PROC sp_RowsChangeClosBySplit
GO
CREATE PROC sp_RowsChangeClosBySplit
@table nvarchar(50),            -- 表名
@field nvarchar(50),            -- 要拼接的字段
@split varchar(10)=,,            -- 分隔符
@where nvarchar(500)=‘‘    -- 条件
AS
BEGIN 
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 +@field
PRINT @sql
EXEC sp_executesql @sql
END
 

调用:

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

分割后:结果集:

bubuko.com,布布扣

普通查询:

SELECT ID FROM dbo.pro_Household WHERE ID<10  

分割钱:结果集

bubuko.com,布布扣

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

标签:style   blog   http   color   ar   os   sp   for   div   

原文地址:http://www.cnblogs.com/wln3344/p/4089502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!