统计相邻相同行数量

xiaowangtian1117 2011-06-10 03:50:09
A
A
A
B
B
A
C
C
B
结果:
A 3
B 2
A 1
C 2
B 2
...全文
43 点赞 收藏 3
写回复
3 条回复
FlySQL 2011年06月10日
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([col] varchar(1))
insert [tb]
select 'A' union all
select 'A' union all
select 'A' union all
select 'B' union all
select 'B' union all
select 'A' union all
select 'C' union all
select 'C' union all
select 'B'

;with fly as
(select *,rn=row_number() over(order by getdate()) from tb)

select col,count(1) as cnt
from(
select col,rn,
gid=rn-(select count(1) from fly where col=t.col and rn<t.rn)
from fly t
) a
group by col,gid
order by min(rn)
/**
col cnt
---- -----------
A 3
B 2
A 1
C 2
B 1

(5 行受影响)

**/
回复 点赞
l3143344 2011年06月10日
友情帮顶
回复 点赞
chuanzhang5687 2011年06月10日
友情帮顶
回复 点赞
发动态
发帖子
疑难问题
创建于2007-09-28

9309

社区成员

12.1w+

社区内容

MS-SQL Server 疑难问题
社区公告
暂无公告