반응형

CREATE TABLE Code_Column (code varchar(10));


INSERT INTO Code_Column VALUES

('0001'),('0002'),('0003'),('0004'),('0005'),('0006'),('0007'),('0008'),('0009'),('0010'),

('0011'),('0012'),('0013'),('0014'),('0015'),('0016'),('0017'),('0018'),('0019'),('0020'),

('0021'),('0022'),('0023'),('0024'),('0025'),('0026'),('0027'),('0028'),('0029'),('0030'),

('0031'),('0032'),('0033'),('0034'),('0035'),('0036'),('0037'),('0038'),('0039'),('0040');


SELECT * FROM Code_Column;



SELECT

    MAX(CASE seq MOD 5 WHEN 0 THEN code ELSE NULL END) code1,

    MAX(CASE seq MOD 5 WHEN 1 THEN code ELSE NULL END) code2,

    MAX(CASE seq MOD 5 WHEN 2 THEN code ELSE NULL END) code3,

    MAX(CASE seq MOD 5 WHEN 3 THEN code ELSE NULL END) code4,

    MAX(CASE seq MOD 5 WHEN 4 THEN code ELSE NULL END) code5

FROM

    (SELECT (@seq := @seq + 1) as seq, code FROM Code_Column, (SELECT @seq := -1) x ) y

GROUP BY seq DIV 5;




select case when tmp.seq = 1 then code else '' end as code1,

         case when tmp.seq = 2 then code else '' end as code2,

         case when tmp.seq = 3 then code else '' end as code3,

         case when tmp.seq = 4 then code else '' end as code4,

         case when tmp.seq = 5 then code else '' end as code5,

   case when @y < 5 then @z else @z := @z + 1 end as seq, 

   case when @y >= 5 then @y := 1 else @y := @y +1 end as seq2

from (

select code, 

case when @x <5 then @x:= @x+ 1 

else @x :=1 

end as seq

from Code_Column i, (select @x := 0) x1

) tmp, (select @z:=1, @y := 0) y1





select max(code1) as code1, max(code2) as code2, max(code3) as code3

     , max(code4) as code4, max(code5) as code5

from

 (select case when tmp.seq = 1 then code else '' end as code1,

         case when tmp.seq = 2 then code else '' end as code2,

         case when tmp.seq = 3 then code else '' end as code3,

         case when tmp.seq = 4 then code else '' end as code4,

         case when tmp.seq = 5 then code else '' end as code5,

   case when @y < 5 then @z else @z := @z + 1 end as seq, 

   case when @y >= 5 then @y := 1 else @y := @y +1 end as seq2

 from (select code, case when @x <5 then @x:= @x+ 1 else @x :=1 end as seq

       from Code_Column i, (select @x := 0) x1) tmp, (select @z:=1, @y := 0) y1

) tmp1 

group by seq;



반응형

+ Recent posts