循環可以用,游标在数据量大时效率不怎么好吧。xnnfan的回答对于这些数据可以解决问题但局限性很大。如果是里面有4个内容01,02,03,04就不行了,而里面的数据的个数是不确定的。我试着用游标写了下,可以实现,说实话不太想用这种方法。declare @dm varchar(20),@sl numeric(18,4),@i int,--开始复制的位置@j int--循环的判断条件declare abc cursor for select * from testcreate table #temp(dm varchar(20), sl numeric(18,4))open abcfetch next from abcinto @dm,@slwhile @@FETCH_STATUS = 0beginset @i=1 select @j=CHARINDEX(',',@dm,@i)if @j=0 begin insert into #temp values(@dm,@sl)endelsebeginwhile @j<>0begin insert into #temp values(substring(@dm,@i,CHARINDEX(',',@dm,@i)-@i),@sl) select @i=CHARINDEX(',',@dm,@i)+1 select @j=CHARINDEX(',',@dm,@i) if @j=0 begin insert into #temp values(substring(@dm,@i,len(@dm)),@sl) endendendfetch next from abcinto @dm,@slendclose abcdeallocate abcselect dm,sum(sl) as sl from #temp group by dmdrop table #temp