解析SQL Server 2005溢用之:合并列值
很多人可能發現,無論是在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