很多人可能發現,無論是在sql 2000, 還是在 sql 2005 中,都沒有提供字符串的聚合函數, 所以, 當我們在處理下列要求時,會比較麻煩, 但在 SQL Server 2005中, 這種情況得到了改善, 我們可以輕松地完成這項處理。
問題描述:
無論是在sql 2000, 還是在 sql 2005 中,
都沒有提供字符串的聚合函數, 所以, 當
我們在處理下列要求時,會比較麻煩:
有表tb, 如下:
以下為引用的內容:
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到結果:
id values
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即, group by id, 求 value 的和(字符串相加)
1. 舊的解決方法
創建處理函數
以下為引用的內容:
CREATE FUNCTION dbo.f_str(@id int)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r + ',' + value
FROM tb
WHERE id=@id
RETURN STUFF(@r, 1, 1, '')
END
GO
-- 調用函數
SELECt id, values=dbo.f_str(id)
FROM tb
GROUP BY id
新聞熱點
疑難解答