首页 > 数据库技术 > 详细

sqlserver字符串多行合并为一行

时间:2017-01-23 17:23:31      阅读:616      评论: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 版权所有
打开技术之扣,分享程序人生!