2017-06-22 63 views
1

我有一个特定场景,可以根据特定格式对结果集中的数据进行分组。以下是我的数据外观。以特定格式对组数据进行SQL查询

-------------------------------- 
    ID  Value 
-------------------------------- 
    1   2 
    2   1 
    3   1 
    4   3 
    5   1 
    6   1 
    7   6 
    8   9 
    9   1 
    10   1 

我需要根据“值”列对结果集值进行分组。数据从非'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 

回答

6

组以非1值开始。您可以使用累积和来定义它们:

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

@JamesZ您是否尝试过实际运行此查询?它看起来很适合我。 –

+0

@TimBiegeleisen我的评论是对现在被删除的评论的回答,它声称每行都返回4。 –