如果仅仅这样,需要临时表. select * , id = identity(int , 1 , 1) into tmp from tb select max(case id%2 when 1 then title end) title1, max(case id%2 when 0 then title end) title2 from tmp group by id/2
select px= identity(int,1,1),* into # from table1select max(case when px %2 = 1 then title else null end ) as title1, max(case when px %2 = 0 then title else null end ) as title2 from # group by px/2
如果不要求按行取,可以使用如下:select max(case id%2 when 1 then title end) title1, max(case id%2 when 1 then title end) title2 from ( select * , id = (select count(*) from tb where title < t.title) + 1 from tb t ) m group by id/2
如果仅仅这样,需要临时表. select * , id = identity(int , 1 , 1) into tmp from tb select max(case id%2 when 1 then title end) title1, max(case id%2 when 0 then title end) title2 from tmp group by (id-1)/2 如果不要求按行取,可以使用如下: select max(case id%2 when 1 then title end) title1, max(case id%2 when 1 then title end) title2 from ( select * , id = (select count(*) from tb where title < t.title) + 1 from tb t ) m group by (id-1)/2
问题解决,结贴正解是: select * , id = identity(int , 1 , 1) into tmp from tb select max(case id%2 when 1 then title end) title1, max(case id%2 when 0 then title end) title2 from tmp group by (id-1)/2
select * , id = identity(int , 1 , 1) into tmp from tb
select
max(case id%2 when 1 then title end) title1,
max(case id%2 when 0 then title end) title2
from tmp
group by id/2
max(case when px %2 = 0 then title else null end ) as title2
from #
group by px/2
max(case id%2 when 1 then title end) title1,
max(case id%2 when 1 then title end) title2
from
(
select * , id = (select count(*) from tb where title < t.title) + 1 from tb t
) m
group by id/2
select * , id = identity(int , 1 , 1) into tmp from tb
select
max(case id%2 when 1 then title end) title1,
max(case id%2 when 0 then title end) title2
from tmp
group by (id-1)/2 如果不要求按行取,可以使用如下: select
max(case id%2 when 1 then title end) title1,
max(case id%2 when 1 then title end) title2
from
(
select * , id = (select count(*) from tb where title < t.title) + 1 from tb t
) m
group by (id-1)/2
select * , id = identity(int , 1 , 1) into tmp from tb
select
max(case id%2 when 1 then title end) title1,
max(case id%2 when 0 then title end) title2
from tmp
group by (id-1)/2