需求:
ID STATUS
---------- ----------
1 开具
2 开具
3 开具
4 空白
5 空白
6 空白
7 作废
8 作废
9 开具
10 开具
11 开具
ID ZT
---------- ----------
12 开具
13 空白
14 空白
15 空白
16 空白
17 空白
18 空白
19 空白
目标:
开具 1-3
开具 9-12
空白 4-6
空白 13-19
作废 7-8
sql 版本 :
;
with
T
as
(
select
'1'
as
编号 ,
'A'
as
类型
union
ALL
select
'2'
,
'A'
union
ALL
select
'3'
,
'A'
union
ALL
select
'4'
,
'A'
union
ALL
select
'10'
,
'A'
union
ALL
select
'11'
,
'A'
union
ALL
select
'12'
,
'A'
union
ALL
select
'13'
,
'A'
union
ALL
select
'14'
,
'A'
union
ALL
select
'20'
,
'B'
union
ALL
select
'21'
,
'B'
union
ALL
select
'22'
,
'B'
union
ALL
select
'23'
,
'B'
union
ALL
select
'31'
,
'B'
union
ALL
select
'32'
,
'B'
union
ALL
select
'33'
,
'B'
union
ALL
select
'34'
,
'B'
),
tt
as
(
select
*,
ROW_NUMBER() over(partition
by
类型
order
by
cast
(编号
as
int
))
as
rownum
from
T
)
select
类型,
MIN
(
cast
(编号
as
int
))
as
起号 ,
max
(
cast
(编号
as
int
))
as
止号
from
tt
group
by
类型,编号- rownum
/*
类型
起号 止号
A
1 4
A
10 14
B
20 23
B
31 34
*/
Oracle 版本 :