行合并,急,急,急~~~~~~
有如下几行数据
名称1 价格1
名称2 价格2
名称3 价格3
名称4 价格4
名称5 价格5
名称6 价格6
名称7 价格7
名称8 价格8
现在要变成:
名称1 价格1 名称2 价格2 名称3 价格3
名称4 价格4 名称5 价格5 名称6 价格6
名称7 价格7 名称8 价格8
SQL语句该如何写?????????????
[解决办法]
declare @t table(id int identity(1,1),col1 nvarchar(5),col2 nvarchar(5))insert @t select '名称1' ,'价格1' insert @t select '名称2' ,'价格2' insert @t select '名称3' ,'价格3' insert @t select '名称4' ,'价格4' insert @t select '名称5' ,'价格5' insert @t select '名称6' ,'价格6' insert @t select '名称7' ,'价格7' insert @t select '名称8' ,'价格8'select a.col1,a.col2,b.col1,b.col2,col1=isnull(c.col1,''),col2=isnull(c.col2,'')from (select con=(id-1)%3+1,* from @t where id!>3)aleft join (select con=(id-1)%3+1,* from @t where id between 4 and 6 )b on a.con=b.conleft join (select con=(id-1)%3+1,* from @t where id >6)c on c.con=a.con--(所影响的行数为 1 行)(所影响的行数为 1 行)(所影响的行数为 1 行)(所影响的行数为 1 行)(所影响的行数为 1 行)(所影响的行数为 1 行)(所影响的行数为 1 行)(所影响的行数为 1 行)col1 col2 col1 col2 col1 col2 ----- ----- ----- ----- ----- ----- 名称1 价格1 名称4 价格4 名称7 价格7名称2 价格2 名称5 价格5 名称8 价格8名称3 价格3 名称6 价格6 (所影响的行数为 3 行)
[解决办法]
--我这个不需要临时表.create table tb(col1 varchar(10), col2 varchar(10))insert into tb values('名称1','价格1') insert into tb values('名称2','价格2') insert into tb values('名称3','价格3') insert into tb values('名称4','价格4') insert into tb values('名称5','价格5') insert into tb values('名称6','价格6') insert into tb values('名称7','价格7') insert into tb values('名称8','价格8') goselect t1.col1,t1.col2,t2.col1,t2.col2,isnull(t3.col1,'') col1,isnull(t3.col2,'') col2 from(select id = px/3 , col1 , col2 from (SELECT * , PX=(SELECT COUNT(DISTINCT col1) FROM tb WHERE col1 < a.col1) + 1 FROM tb a) t where px % 3 = 1) t1 left join (select id = px/3 , col1 , col2 from (SELECT * , PX=(SELECT COUNT(DISTINCT col1) FROM tb WHERE col1 < a.col1) + 1 FROM tb a) t where px % 3 = 2) t2 on t1.id = t2.idleft join (select id = (px-1)/3 , col1 , col2 from (SELECT * , PX=(SELECT COUNT(DISTINCT col1) FROM tb WHERE col1 < a.col1) + 1 FROM tb a) t where px % 3 = 0) t3 on t1.id = t3.iddrop table tb/*col1 col2 col1 col2 col1 col2 ---------- ---------- ---------- ---------- ---------- ---------- 名称1 价格1 名称2 价格2 名称3 价格3名称4 价格4 名称5 价格5 名称6 价格6名称7 价格7 名称8 价格8 (所影响的行数为 3 行)*/