to 楼上:
group by (id+2)/3 ,如果要連續4個就不對了,
所以用group by (id-1)/3 比較有擴展性.
----------------------------------------------------------------------------------
的确.但是如果要连续4个,就改为group by (id+3)/4.这样做的目的是有时可能要为汇总结果生成行号,使用这种方法生成的行号就是从1开始的,而楼上的方法生成的行号是从0开始的.例如:
select (id+2)/3 as id,avg(data) as data from @t
group by (id+2)/3
结果为:
id data
-------------------------------------
1 4
2 14
3 24
4 34
declare @t table(id int,data int)
insert @t
select 1 , 3 union all
select 2 , 4 union all
select 3 , 5 union all
select 4 , 13 union all
select 5 , 14 union all
select 6 , 15 union all
select 7 , 23 union all
select 8 , 24 union all
select 9 , 25 union all
select 10 , 33 union all
select 11 , 34 union all
select 12 , 35
select avg(data) from
(select idd = (id+2)/3,* from @t) a
group by idd
樓上的
select (id+2)/3 as id,avg(data) as data from @t
group by (id+2)/3
結果是
id data
-------------
1 3
1.333.. 4
1.666.. 5
2 13
2.333.. 14
2.666.. 15
3 23
3.333... 24
3.6666....