/* 纵向表内容 f_billno,f_invname 0001 商品1 0002 商品A 0001 商品2 0001 商品3 0002 商品B 0003 商品I 0003 商品II 目标效果 fid,ftext 0001 商品1商品2商品3 0002 商品A商品B 0003 商品I商品II 以下是SQL语句,用到了临时表和游标的使用。 */ --查看源数据 select f_billno,f_invname from test --定义两个临时变量用来保存游标取得的数据 DECLARE @c varchar(255) DECLARE @c1 varchar(255) --删除临时表 if object_id('tempdb..#tmp') is not null drop table #tmp --建立临时表及生成数据 Create Table #tmp(fid varchar(4),ftext varchar(255)) insert into #tmp select f_billno,'' from test group by f_billno --取游标数据 declare cur_test CURSOR FOR select f_billno,f_invname from test open cur_test fetch next from cur_test into @c,@c1 --第一个循环 while @@fetch_status=0 begin --重复取数据并生成相应的处理SQL exec('update #tmp set ftext=ftext+'''+@c1+' '' where fid='''+@c+''''); fetch next from cur_test into @c,@c1 end --显示结果数据 select * from #tmp --关闭游标 close cur_test deallocate cur_test