相关文章推荐
瘦瘦的自行车  ·  sql server ...·  8 小时前    · 
帅气的勺子  ·  SQL Server ...·  8 小时前    · 
细心的羊肉串  ·  在SQL ...·  2 天前    · 
礼貌的火腿肠  ·  Split-Path ...·  5 月前    · 
力能扛鼎的抽屉  ·  How do I solve this ...·  1 年前    · 
/****** 删除表******/
IF EXISTS  (SELECT  * FROM dbo.SysObjects WHERE ID = object_id(N'[MergeRow]') AND OBJECTPROPERTY(ID, 'IsTable') = 1) 
drop table MergeRow
/****** 新建测试表,插入测试数据******/
CREATE TABLE MergeRow(id int, column1 varchar(100), column2 varchar(100)) 
INSERT MergeRow SELECT 1, '行1列1','行1列2' 
UNION ALL SELECT 1, '行2列1','行2列2' 
UNION ALL SELECT 2, '行3列1','行3列2' 
UNION ALL SELECT 2, '行4列1','行4列2' 
UNION ALL SELECT 2, '行5列1','行5列2' 
/****** 查询转换前原始表 ******/
SELECT * FROM MergeRow 
/*方法一关键字function*/ 
/****** 创建自定义方法,合并列一******/
CREATE function dbo.fn_RowSumcolumn1(@id int) 
RETURNS varchar(8000)
BEGIN 
DECLARE @column1 varchar(8000)
SELECT @column1 = isnull(@column1 + ',', '') + column1 FROM MergeRow WHERE id=@id 
RETURN @column1
/****** 创建自定义方法,合并列二******/
CREATE function dbo.fn_RowSumcolumn2(@id int) 
RETURNS varchar(8000)
BEGIN 
DECLARE @column2 varchar(8000)
SELECT @column2 = isnull(column2 + ',', '') + column2 FROM MergeRow WHERE id=@id 
RETURN @column2
/****** 调用方法,查看合并后数据******/
SELECT id, column1 = dbo.fn_RowSumcolumn1(id),column2 = dbo.fn_RowSumcolumn2(id) FROM MergeRow GROUP BY id 
/****** 删除方法******/
DROP function dbo.fn_RowSumcolumn1 
DROP function dbo.fn_RowSumcolumn2
/*方法二关键字XML*/ 
SELECT id, column1=STUFF((SELECT ','+column1 FROM MergeRow t WHERE id=MergeRow.id FOR XML PATH('')), 1, 1, '') 
,[values1]=STUFF((SELECT ','+column2 FROM MergeRow t WHERE id=MergeRow.id FOR XML PATH('')), 1, 1, '') 
FROM MergeRow 
GROUP BY id 
最后编辑于:2017-11-27 03:37