a b 1 20001 1 20002 ... ... 1 20100 4 20101 ... .... 4 20150 1 20151 ... ... 1 20200 我想把这样的表转成如下结构 a b c 1 20001 20100 4 20101 20150 1 20151 20200大致可以这样写:declare @t table(a int,b int,group int) insert @t select a,b from yourTable --你的数据先存入临时表 declare @gr int set @gr=0 declare @a int update @t set @gr=case when a=@a then @gr else @gr+1 end, group=@gr,@a=a select min(a) as a,min(b) as b,max(b) as c from @t group by group --你要的输出结果
循环下去,若记录和先前的A不等,则写一次新记录,A,MAX,MIN,然后做同样操作,产生
第二条记录A1,MAX1,MIN1.
1 20001
1 20002
... ...
1 20100
4 20101
... ....
4 20150
1 20151
... ...
1 20200
我想把这样的表转成如下结构
a b c
1 20001 20100
4 20101 20150
1 20151 20200大致可以这样写:declare @t table(a int,b int,group int)
insert @t select a,b from yourTable --你的数据先存入临时表
declare @gr int
set @gr=0
declare @a int
update @t set @gr=case when a=@a then @gr else @gr+1 end, group=@gr,@a=a
select min(a) as a,min(b) as b,max(b) as c from @t group by group --你要的输出结果
---------------------------
1 20001 0
1 20002 0
... ... ...
1 20100 0
4 20101 1
... .... ...
4 20150 1
1 20151 2
... ... ...
1 20200 2此时group就可以一步到位地group统计了。