將多筆相同鍵值的欄位內容合併
常常遇到這樣的問題,如何將相同鍵值的藍位內容值串接 ?
舉例來說 TableA 如下:
ID Type DESC
1 cpu 處理器
1 cpu 雙核心
1 cpu 800外頻
2 HD 硬碟
2 HD 500G
2 HD 5400轉
希望將欄位內容串接並以【,】分隔,在 SQL Server 2005 可以利用 XML PATH 來將功能實作,如:
ID Type DESC
1 cpu 處理器,雙核心,800外頻
2 HD 硬碟,500G,5400轉
SELECT T1.id, T1.type,
(
STUFF( (
SELECT ',' + [DESC]
FROM @TABLEA T2
WHERE T2.id = T1.id
FOR XML PATH('')
), 1, 1, ''
)
) AS [DESC]
FROM @TABLEA T1
GROUP BY id, type
如果只是想單純地將欄位內容單純串接,則可以用下列做法:
ID Type DESC
1 cpu 處理器雙核心800外頻
2 HD 硬碟500G5400轉
SELECT T1.id, T1.type,
(
SELECT [DESC] + ''
FROM @TABLEA T2
WHERE T2.id = T1.id
FOR XML PATH('')
) AS [DESC]
FROM @TABLEA T1
GROUP BY id, type
如果是 SQL Server 2000 則請參考 Concatenate the values in a column in SQL Server 2000 and 2005 文章
關於 PATH 與 STUFF 用法則參考: