SQL# 串連同一列的資料值 #Concatenate the values in a column
如何將相同鍵值的藍位內容值串接 ?
舉例來說 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
SQL2000 必須寫function方式完成
create function Concat (@Col1 varchar(10))
returns varchar(1000)
as
begin
declare @resultStr varchar(1000)
select @resultStr = coalesce(@resultStr,'') + ','+ Col2 from StrConcat where col1 = @Col1
return stuff(@resultstr,1,1,'')
end
Select Col1,dbo.Concat(col1) from StrConcat
group by col1
order by col1