sqlserver字符串多行合并为一行
2017-12-30 15:43
253 查看
--创建测试表 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
相关文章推荐
- Expression构建DataTable to Entity 映射委托 sqlserver 数据库里面金额类型为什么不建议用float,实例告诉你为什么不能。 sql server 多行数据合并成一列 C# 字符串大写转小写,小写转大写,数字保留,其他除外 从0开始用U盘制作启动盘装Windows10系统(联想R720笔记本)并永久激活方法 纯CSS打造淘宝导航菜单栏 C# Winform
- SqlServer实现oracle10g的 wmsys.wm_concat()/使用自连接、for xml path('')和stuff合并显示多行数据到一行中
- SQL合并多行记录为一行(网抄文章)
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- oracle查询多行数据合并成一行数据
- hive中自定义函数(UDAF)实现多行字符串拼接为一行
- [Hive]用concat_w实现将多行记录合并成一行
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- ORACLE纯SQL实现多行合并一行[转]
- LINUX下把多行文件合并成一行,并组装成SQL
- 将多行数据合并成一行
- Sql Server里巧用Case将多行显示的数据合并为一行显示
- sqlserver 多行合并
- shell语言处理多行合并一行问题
- sql把查询的多行记录合并成字符串
- Oracle 合并列成一行字符串
- Oracle 多行合并一行 方法
- ORACLE纯SQL实现多行合并一行
- oracle 聚合函数 LISTAGG ,将多行结果合并成一行
- Oracle 多行记录合并/连接/聚合字符串的几种方法