如数据为a,110,1000,eeeee,0,b,110,1888,eeeee,1,c,80,999,erer,0

解决方案 »

  1.   


    declare @d varchar(1000);
    set @d='a,110,1000,eeeee,0,b,110,1888,eeeee,1,c,80,999,erer,0';
    ;with cte as(
    select vl=substring(','+@d+',',number+1,charindex(',',','+@d+',',number+1)-number-1),ROW_NUMBER()over(order by number)as rownum from master..spt_values where type ='P' and number between 1 and len(','+@d+',')-1 and substring(','+@d+',',number,1)=','
    )
    select max(vl1),max(vl2),max(vl3),max(vl4),max(vl5) from (select (case when c1.rownum%5=1 then vl else null end)vl1,(case when c1.rownum%5=2 then vl else null end)vl2,(case when c1.rownum%5=3 then vl else null end)vl3,(case when c1.rownum%5=4 then vl else null end)vl4,(case when c1.rownum%5=0 then vl else null end)vl5,rownum from cte c1)t group by (rownum-1)/5