sqlserver字符串多行合并为一行
生活随笔
收集整理的這篇文章主要介紹了
sqlserver字符串多行合并为一行
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 --創建測試表
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
?
轉載于:https://www.cnblogs.com/xiangzhong/p/8150083.html
總結
以上是生活随笔為你收集整理的sqlserver字符串多行合并为一行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cs231n笔记:线性分类器
- 下一篇: 15.django之Django-Res