我有一个特定的场景,可以根据特定的格式对结果集中的数据进行分组。以下是我的数据的样子。
--------------------------------
ID Value
--------------------------------
1 2
2 1
3 1
4 3
5 1
6 1
7 6
8 9
9 1
10 1
我需要根据'值'对结果集值进行分组。柱。要从非第一个实例中分组的数据'直到' 1'的最后一个例子。个人非需要拥有自己的团体价值。我的预期结果应该是这样的。
------------------------------------
ID Value Group
------------------------------------
1 2 Group1
2 1 Group1
3 1 Group1
4 3 Group2
5 1 Group2
6 1 Group2
7 6 Group3
8 9 Group4
9 1 Group4
10 1 Group4
答案 0 :(得分:6)
组以非1值开头。您可以使用累积总和来定义它们:
select t.*,
sum(case when value <> 1 then 1 else 0 end) over (order by id) as grp
from t;