我有一张这样的桌子:
WITH S AS (
SELECT 'B' type, 1 number
UNION SELECT 'B', 2
UNION SELECT 'B', 3
UNION SELECT 'B', 4
UNION SELECT 'B', 5
UNION SELECT 'A', 6
UNION SELECT 'A', 7
UNION SELECT 'B', 8
UNION SELECT 'B', 9
UNION SELECT 'B', 10
UNION SELECT 'C', 11
UNION SELECT 'A', 12
UNION SELECT 'B', 13
UNION SELECT 'B', 14
UNION SELECT 'B', 15
UNION SELECT 'B', 16
UNION SELECT 'B', 17
UNION SELECT 'A', 18
UNION SELECT 'C', 19
UNION SELECT 'B', 20
UNION SELECT 'B', 21
)
如何获得每种类型连续出现的独特数字序列(例如,3 个或更多)?例如对于 B 1~5 会有类似'B1',对于 B 8~10 -'B2'等。我怀疑应该有类似的组合LEAD/LAG
and DENSE_RANK()
,但不知道如何申请。数字是唯一的,如果这很重要的话。
结果应如下所示:
Type Number Sequence
-----------------------
B 1 B1
B 2 B1
B 3 B1
B 4 B1
B 5 B1
A 6 NULL
......................
B 8 B2
B 9 B2
B 10 B2
C 11 NULL
A 12 NULL
B 13 B3
....................
B 17 B3