T SQL 將一列多行數據合併爲一行

  SQL Server 在進行數據遷移和報表處理的時候遇到將一列多行數據拼接爲一個字符串的情形,查找相關的資料整理以下,提供兩種方法。函數

  Table:SCspa

Studentcode

Courseblog

張三ci

大學語文字符串

李四table

大學語文class

張三方法

書法鑑賞im

張三

音樂欣賞

李四

電影賞析

  指望獲得的結果:

Student

Course

張三

大學語文,書法鑑賞,音樂欣賞

李四

大學語文,電影賞析

  1、用戶自定義函數

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)

                  

  2、使用 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)

  

相關文章
相關標籤/搜索