zoukankan      html  css  js  c++  java
  • 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)

      

  • 相关阅读:
    day 23 索引
    day 22 全量更新
    day 21 求贫困户
    day20 函数,同比,和基础
    知识点记录
    day 20试题
    day 16面试题
    day 13拉链数据做存储
    day 13 拉链数据批量处理
    一维,二维,三维数组,vector 初始化
  • 原文地址:https://www.cnblogs.com/xinaixia/p/10337805.html
Copyright © 2011-2022 走看看