作者:lady张昕彤 | 来源:互联网 | 2023-05-18 07:14
如果存在如下数据表:
A B
pro1 qqqqq
pro1 wwwww
pro1 eeeee
pro2 rrrrr
pro2 ttttt
pro1 yyyyy
pro1 uuuuu
要实现如下输出:
A B
pro1 qqqqq,wwwww,eeeee,yyyyy,uuuuu
pro2 rrrrr,ttttt
7 个解决方案
DECLARE @t TABLE(col1 varchar(10),col2 varchar(100))
--定义游标并进行合并处理
DECLARE tb CURSOR LOCAL
FOR
SELECT col1,col2 FROM tb ORDER BY col1,col2
DECLARE @col1_old varchar(10),@col1 varchar(10),@col2 varchar(10),@s varchar(100)
OPEN tb
FETCH tb INTO @col1,@col2
SELECT @col1_old=@col1,@s=''
WHILE @@FETCH_STATUS=0
BEGIN
IF @col1=@col1_old
SELECT @s=@s+','+CAST(@col2 as varchar)
ELSE
BEGIN
INSERT @t VALUES(@col1_old,STUFF(@s,1,1,''))
SELECT @s=','+CAST(@col2 as varchar),@col1_old=@col1
END
FETCH tb INTO @col1,@col2
END
INSERT @t VALUES(@col1_old,STUFF(@s,1,1,''))
CLOSE tb
DEALLOCATE tb
select * from @t
结果:
pro1
eeeee,qqqqq,uuuuu,wwwww,yyyyy pro2
rrrrr,ttttt
看不懂啊。。。。。。我要的是一条语句 要并到一个查询语句里的 ,这么长也用不了啊。。。。加分求解中。。。。
能否具体点??今天加不了分了,还望不吝赐教啊。。。。
楼主可以先把上面的代码写成一个函数,然后调用函数就可以了