码迷,mamicode.com
首页 > 数据库 > 详细

T SQL 将一列多行数据合并为一行

时间:2019-01-30 15:45:48      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:aci   sql   returns   fun   table   nvarchar   inf   select   http   

  SQL Server 在进行数据迁移和报表处理的时候遇到将一列多行数据拼接为一个字符串的情形,查找相关的资料整理如下,提供两种方法。

  Table:SC

Student

Course

张三

大学语文

李四

大学语文

张三

书法鉴赏

张三

音乐欣赏

李四

电影赏析

  期望得到的结果:

Student

Course

张三

大学语文,书法鉴赏,音乐欣赏

李四

大学语文,电影赏析

  一、用户自定义函数

CREATE FUNCTION FN_Merge (@Student NVARCHAR(50))
RETURNS NVARCHAR(50)
AS
      BEGIN
            DECLARE @Course NVARCHAR(50)
            SELECT @Course = ISNULL(@Course + ,,‘‘) + @Course
            FROM SC
            WHERE Student = @Student
            RETURN @COURSE
     END
 
SELECT DISTINCT [Student],dbo.FN_Merge([Student]) AS Course
FROM [dbo].[SC]

  结果:(2 row(s) affected)

  技术分享图片                

  二、使用 FOR XML PATH

SELECT  DISTINCT [Student]
      ,STUFF(
                        (
                              SELECT ,+[Course]
                              FROM [dbo].[SC]
                              WHERE Student = A.Student
                              FOR XML PATH(‘‘)
                        )
                        ,1,1,‘‘
                  )AS Course
  FROM [dbo].[SC] AS A

  结果:(2 row(s) affected)

  技术分享图片

T SQL 将一列多行数据合并为一行

标签:aci   sql   returns   fun   table   nvarchar   inf   select   http   

原文地址:https://www.cnblogs.com/xinaixia/p/10337805.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!