日期:2014-05-18  浏览次数:20471 次

SQL字符合并的问题
原数据
select   *   into   #t
from
(
select   'A '   as   A   , '1 '   as   B
union
select   'A '   as   A   , '2 '   as   B
union
select   'A '   as   A   , '3 '   as   B
union
select   'B '   as   A   , '4 '   as   B
union
select   'B '   as   A   , '5 '   as   B
union
select   'B '   as   A   , '6 '   as   B
union
select   'C '   as   A   , '7 '   as   B
)   a
drop   table   #t

我想分组合并,用查询语句,不用游标的方式。
A     B
----------
A     (1,2,3)
B     (4,5,6)
C     (7)


感谢大师们的帮助


------解决方案--------------------
使用用户定义函数,配合SELECT处理完成字符串合并处理的示例
--处理的数据
CREATE TABLE tb(col1 varchar(10),col2 int)
INSERT tb SELECT 'a ',1
UNION ALL SELECT 'a ',2
UNION ALL SELECT 'b ',1
UNION ALL SELECT 'b ',2
UNION ALL SELECT 'b ',3
GO

--合并处理函数
CREATE FUNCTION dbo.f_str(@col1 varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re= ' '
SELECT @re=@re+ ', '+CAST(col2 as varchar)
FROM tb
WHERE col1=@col1
RETURN(STUFF(@re,1,1, ' '))
END
GO

--调用函数
SELECT col1,col2=dbo.f_str(col1) FROM tb GROUP BY col1
--删除测试
DROP TABLE tb
DROP FUNCTION f_str
/*--结果
col1 col2
---------- -----------
a 1,2
b 1,2,3
--*/
GO

------解决方案--------------------
想一个语句搞掂,用SQL2005吧