Sql 行合并

实现效果

原始数据

原始表

转换后数据

转换后表

示例代码

/****** 删除表******/
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*/ 
/****** 创建自定义方法,合并列一******/
GO 
CREATE function dbo.fn_RowSumcolumn1(@id int) 
RETURNS varchar(8000)
AS 
BEGIN 
DECLARE @column1 varchar(8000)
SELECT @column1 = isnull(@column1 + ',', '') + column1 FROM MergeRow WHERE id=@id 
RETURN @column1
END 
GO 
/****** 创建自定义方法,合并列二******/
GO
CREATE function dbo.fn_RowSumcolumn2(@id int) 
RETURNS varchar(8000)
AS 
BEGIN 
DECLARE @column2 varchar(8000)
SELECT @column2 = isnull(column2 + ',', '') + column2 FROM MergeRow WHERE id=@id 
RETURN @column2
END 
GO

/****** 调用方法,查看合并后数据******/
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 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,384评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,204评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,322评论 25 709
  • 有天晚上在翻朋友圈的时候,发现自己未查阅的信息积累了很多,出于习惯,我将所有的未查看的信息逐一点开,看也未看,然后...
    孤影作伴阅读 8,186评论 10 10
  • 01 躺在床上,我醒了。 枕在我胳膊上的嫦娥,似乎还在酣睡,蜷缩着,像一个婴儿。 嗅着一阵阵幽香,我忍不住伸着脖子...
    胡策春秋阅读 7,604评论 58 22