当前位置:Gxlcms > 数据库问题 > sqlserver字符串多行合并为一行

sqlserver字符串多行合并为一行

时间:2021-07-01 10:21:17 帮助过:41人阅读

--创建测试表 2 CREATE TABLE [dbo].[TestRows2Columns]( 3 [Id] [int] IDENTITY(1,1) NOT NULL, 4 [UserName] [nvarchar](50) NULL, 5 [Subject] [nvarchar](50) NULL, 6 [Source] [numeric](18,0) NULL 7 ) 8 GO 9 10 --插入测试数据 11 INSERT INTO [TestRows2Columns] ([UserName],[Subject],[Source]) 12 SELECT N张三,N语文,60 UNION ALL 13 SELECT N李四,N数学,70 UNION ALL 14 SELECT N王五,N英语,80 UNION ALL 15 SELECT N王五,N数学,75 UNION ALL 16 SELECT N王五,N语文,57 UNION ALL 17 SELECT N李四,N语文,80 UNION ALL 18 SELECT N张三,N英语,100 19 GO 20 21 SELECT * FROM [TestRows2Columns] 22 23 24 25 26 --1 通过 select 累加 27 DECLARE @sql_col VARCHAR(8000) 28 SELECT @sql_col = ISNULL(@sql_col + ,,‘‘) + QUOTENAME([Subject]) FROM TestRows2Columns 29 GROUP BY [Subject] 30 31 SELECT @sql_col 32 33 34 35 36 --2 通过 FOR xml path(‘‘) 合并字符串记录 37 SELECT 38 STUFF( 39 (SELECT # + Subject 40 FROM TestRows2Columns 41 WHERE UserName = 王五 42 FOR xml path(‘‘) 43 ),1,1,‘‘ 44 ) 45 46 47 --3 分组合并字符串记录 48 SELECT 49 UserName, 50 Subject = ( 51 STUFF( 52 (SELECT # + Subject 53 FROM TestRows2Columns 54 WHERE UserName = A.UserName 55 FOR xml path(‘‘) 56 ),1,1,‘‘ 57 ) 58 ) 59 FROM TestRows2Columns A 60 GROUP by UserName

 

sqlserver字符串多行合并为一行

标签:eric   测试表   arc   行合并   style   row   union all   entity   from   

人气教程排行