SQL查询以特定格式分组数据

Pra*_*azz 1 sql sql-server group-by

我有一个特定的方案,根据特定的格式将结果集中的数据分组.以下是我的数据的样子.

--------------------------------
    ID        Value
--------------------------------
    1         2
    2         1
    3         1
    4         3
    5         1
    6         1
    7         6
    8         9
    9         1
   10         1
Run Code Online (Sandbox Code Playgroud)

我需要根据'Value'列对结果集值进行分组.要从非'1'的第一个实例到最后一个'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
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 6

组以非1值开头.您可以使用累积总和来定义它们:

select t.*,
       sum(case when value <> 1 then 1 else 0 end) over (order by id) as grp
from t;
Run Code Online (Sandbox Code Playgroud)