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)