首页 > 数据库技术 > 详细

sqlserver字符串多行合并为一行

时间:2017-01-23 17:23:31      阅读:624      评论:0      收藏:0      [点我收藏+]
--创建测试表
CREATE TABLE [dbo].[TestRows2Columns](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [nvarchar](50) NULL,
    [Subject] [nvarchar](50) NULL,
    [Source] [numeric](18,0) NULL
)
GO

--插入测试数据
INSERT INTO [TestRows2Columns] ([UserName],[Subject],[Source]) 
    SELECT N‘张三‘,N‘语文‘,60  UNION ALL
    SELECT N‘李四‘,N‘数学‘,70  UNION ALL
    SELECT N‘王五‘,N‘英语‘,80  UNION ALL
    SELECT N‘王五‘,N‘数学‘,75  UNION ALL
    SELECT N‘王五‘,N‘语文‘,57  UNION ALL
    SELECT N‘李四‘,N‘语文‘,80  UNION ALL
    SELECT N‘张三‘,N‘英语‘,100
GO

SELECT * FROM [TestRows2Columns]
技术分享

--1 通过 select 累加 DECLARE @sql_col VARCHAR(8000) SELECT @sql_col = ISNULL(@sql_col + ‘,‘,‘‘) + QUOTENAME([Subject]) FROM TestRows2Columns GROUP BY [Subject] SELECT @sql_col
技术分享


--
2 通过 FOR xml path(‘‘) 合并字符串记录 SELECT STUFF( (SELECT ‘#‘ + Subject FROM TestRows2Columns WHERE UserName = ‘王五‘ FOR xml path(‘‘) ),1,1,‘‘ ) 技术分享

 

--3 分组合并字符串记录
SELECT
    UserName,
    Subject = (
               STUFF(
                    (SELECT ‘#‘ + Subject
                     FROM TestRows2Columns
                     WHERE UserName = A.UserName
                     FOR xml path(‘‘)
                    ),1,1,‘‘
                    )
                 )
FROM TestRows2Columns A
GROUP by UserName
技术分享

 


 

sqlserver字符串多行合并为一行

原文:http://www.cnblogs.com/xiaozhi1236/p/6344134.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!