首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

确定行数分组生成流水号,该怎么处理

2013-06-25 
确定行数分组生成流水号小弟我现在碰到一个问题。我有如下数据A01 A02 A03ABACAWAEARAABQAY我要实现A01分组

确定行数分组生成流水号
小弟我现在碰到一个问题。
我有如下数据
A01 A02 A03
     A   B
     A   C
     A   W
     A   E
     A   R
     A   A
     B   Q
     A   Y
我要实现A01分组生成流水号,并且每组最大为5行。
要求结果为:
A01 A02 A03
1     A   B
1     A   C
1     A   W
1     A   E
1     A   R
2     A   A
3     B   Q
2     A   Y 分组生成流水号
[解决办法]


if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (A02 nvarchar(2),A03 nvarchar(2))
insert into [TB]
select 'A','B' union all
select 'A','C' union all
select 'A','W' union all
select 'A','E' union all
select 'A','R' union all
select 'A','A' union all
select 'B','Q' union all
select 'A','Y' union all
select 'A','C1' union all
select 'A','W1' union all
select 'A','E1' union all
select 'A','R1' union all
select 'A','A1' union all
select 'B','Q1' union all
select 'B','Q2' union all
select 'B','Q3' union all
select 'B','Q4' union all
select 'B','Q5' union all
select 'B','Q6' 

select DENSE_RANK() OVER(ORDER BY A02,rn) A01,t.A02,t.A03
from (
select *,(ROW_NUMBER() OVER(PARTITION BY A02 ORDER BY A03) -1 )/5 rn
from  TB
) t

[解决办法]
方法2

select ntile(6) over(order by A02)as A01,* 
from [TB]


详见:
http://msdn.microsoft.com/zh-cn/library/ms175126.aspx

热点排行