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

Posted Now,DayBreak

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了T SQL 将一列多行数据合并为一行相关的知识,希望对你有一定的参考价值。

  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 将一列多行数据合并为一行的主要内容,如果未能解决你的问题,请参考以下文章

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

关于SQL Server将一列的多行内容拼接成一行,合并显示在另外表中

SQL Server将一列的多行内容拼接成一行的实现方法

SQL 多行多列数据清洗合并为一行

SQL 怎么将一列中的数据按一个分隔符分成多列显示

SQL Server将一列的多行内容拼接成一行