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)

      

  • 相关阅读:
    HDU 1285
    HDU 1251
    HDU 1166
    UVA 10003
    HDU 5968
    CodeForces 371C
    POJ 2456
    POJ 2250
    oracle的start with connect by prior
    Hibernate session中的createCriteria方法
  • 原文地址:https://www.cnblogs.com/xinaixia/p/10337805.html
Copyright © 2011-2022 走看看