2017-06-22 50 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。 –