sql server两行数据合并成一行

比如:列名1列名2列名3NUM1AS31NUM2B222NUM3C333NUM3C453NUM4DWE5就是第三第四行除了一个字段不一样,其他全一样,怎么吧这个不一样的字... 比如:
列名1 列名2 列名3
NUM1 AS3 1
NUM2 B22 2
NUM3 C33 3
NUM3 C45 3
NUM4 DWE 5

就是第三第四行除了一个字段不一样,其他全一样,怎么吧这个不一样的字段合并到一起去变成下面的样子

列名1 列名2 列名3
NUM1 AS3 1
NUM2 B22 2
NUM3 C33,C45 3
NUM4 DWE 5

求教,谢谢
不一样的列是同一张表的同一个字段,就是值不同
展开
 我来答
_翻_书_
2010-07-27 · 超过24用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:0
展开全部
以前写过一个,原表名为t_test,有三列:c1,c2,c3,分别与你的列1,列3,列2对应,用来处理数据的存储过程如下:
说明:t_test_tmp是用来存放处理后数据的表

CREATE PROCEDURE p_testCur
as
declare @c1 as varchar(50)
declare @c2 as varchar(50)
declare @c3 as varchar(50)
declare @c as varchar(500)

set @c=''
delete from t_test_tmp
DECLARE cur_test1 CURSOR FOR
SELECT distinct c1,c2
FROM t_test
order by c1,c2

OPEN cur_test1
FETCH NEXT FROM cur_test1 into @c1,@c2
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE cur_test2 CURSOR FOR
SELECT c3
FROM t_test
where c1=@c1 and c2=@c2
order by c3
set @c=''
OPEN cur_test2
FETCH NEXT FROM cur_test2 into @c3
WHILE @@FETCH_STATUS = 0
BEGIN
set @c=@c+@c3+','
FETCH NEXT FROM cur_test2 into @c3
END
set @c=left(@c,len(@c)-1)
insert into t_test_tmp values(@c1,@c2,@c)
CLOSE cur_test2
DEALLOCATE cur_test2
FETCH NEXT FROM cur_test1 into @c1,@c2
END

CLOSE cur_test1
DEALLOCATE cur_test1
select * from t_test_tmp
GO
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式