日期:2014-05-18 浏览次数:20716 次
select createdate, sum(case when rn=1 then torquevalue else 0 end) as [1], sum(case when rn=2 then torquevalue else 0 end) as [2], sum(case when rn=3 then torquevalue else 0 end) as [3], sum(case when rn=4 then torquevalue else 0 end) as [4], sum(case when rn=5 then torquevalue else 0 end) as [5] from( select torquevalue,createdate,rn from( select row_number()over(partition by createdate order by (select 1))rn from tb )t where rn<=5 )t1 group by createdate
------解决方案--------------------
;with f as ( select id=row_number()over(order by getdate()),* from tb ) select distinct b * from f a cross apply (select top 5 * from f where create=a.create order by id)b
------解决方案--------------------
create table buqingle(x int, y date)
insert into buqingle
select 151,'2011-09-15' union all
select 152,'2011-09-15' union all
select 153,'2011-09-15' union all
select 154,'2011-09-15' union all
select 155,'2011-09-15' union all
select 156,'2011-09-15' union all
select 157,'2011-09-15' union all
select 181,'2011-09-18' union all
select 182,'2011-09-18' union all
select 183,'2011-09-18' union all
select 184,'2011-09-18' union all
select 185,'2011-09-18' union all
select 201,'2011-09-20' union all
select 202,'2011-09-20' union all
select 203,'2011-09-20' union all
select 204,'2011-09-20' union all
select 205,'2011-09-20'
with t2 as
(
select y,x,rn
from
(select row_number() over(partition by y order by getdate()) rn,x,y
from buqingle) t
where t.rn<=5)
select y '日期',[1] '第一个值',
[2] '第二个值',[3] '第三个值',
[4] '第四个值',[5] '第五个值'
from t2
pivot(sum(x) for rn IN ([1],[2],[3],[4],[5])) t3
日期 第一个值 第二个值 第三个值 第四个值 第五个值
---------- ----------- ----------- ----------- ----------- -----------
2011-09-15 151 152 153 154 155
2011-09-18 181 182 183 184 185
2011-09-20 201 202 203 204 205
(3 row(s) affected)