日期:2014-05-18 浏览次数:20576 次
ID aname aage 1 '张三' '10' 2 '李四' '20' 3 '王五' '30' 4 '孙六' '22' 5 '赵达' '44' 6 '钱二' '21' 7 '吕宋' '35' /* 表结构最初如上所示,但是为了排版出报表,客户要求: 只能显示总记录条数的一半记录, 另外一半或者不足一半的记录行转列,排在显示出来的记录后面,如下所示结构。 */ ID aname1 aage1 aname2 aage2 1 '张三' '10' '赵达' '44' 2 '李四' '20' '钱二' '21' 3 '王五' '30' '吕宋' '35' 4 '孙六' '22' NULL NULL
declare @t table (
ID int not null,
aname varchar(8) not null,
aage tinyint not null
)
insert into @t
select 1,'张三',10 union all
select 2,'李四',20 union all
select 3,'王五',30 union all
select 4,'孙六',22 union all
select 5,'赵达',44 union all
select 6,'钱二',21 union all
select 7,'吕宋',35
;with T1 as (
select top 50 percent
row_number() over (order by ID) AS Row,ID,aname,aage
from @t)
,T2 as (
select row_number() over (order by ID) AS Row,ID,aname,aage
from @t a where not exists (
select 1 from T1 b where a.ID = b.ID
)
)
select *
from T1 LEFT join T2 ON T1.Row = T2.Row