我正在尝试检测配置单元表列中的序列。我有 3 列(id、标签、索引)。每个 id 都有一个标签序列, index 是标签的顺序,比如
id label index
a x 1
a y 2
a x 3
a y 4
b x 1
b y 2
b y 3
b y 4
b x 5
b y 6
我想确定是否出现 x,y,x,y 的标签序列。
我正在考虑尝试使用主要功能来完成此操作,例如:
select id, index, label,
lead( label, 1) over (partition by id order by index) as l1_fac,
lead( label, 2) over (partition by id order by index) as l2_fac,
lead( label, 3) over (partition by id order by index) as l3_fac
from mytable
产量:
id index label l1_fac l2_fac l3_fac
a 1 x y x y
a 2 y x y NULL
a 3 x y NULL NULL
a 4 y NULL NULL NULL
b 1 x y y y
b 2 y y y x
b 3 y y x y
b 4 y x y NULL
b 5 x y NULL NULL
其中 l1(2,3) 是下一个标签值。然后我可以检查一个模式
where label = l2_fac and l1_fac = l3_fac
这适用于 id = a,但不适用于标签序列为:x、y、y、y、y、x 的 id = b。我不在乎它是连续 3 年,我只是对它从 x 到 y 再到 x 到 y 感兴趣。
我不确定这是否可能,我正在尝试分组和分区的组合,但没有成功。