2016-09-21 57 views
1

我想組我的變量以特定方式動態分組

我的數據:藍色列是標識,紅色我的數據佈局,綠色是我想要的輸出

enter image description here

這組所有在B之前那組下一A之前所有的B,然後組的C

這是針對一個ID一樣,我想這樣的事情發生的所有ID(信息是動態的,每個ID)在A

回答

1

SQL表格代表無序集合。除非列明確指定了排序,否則沒有排序。讓我假設這樣一個列存在。

你想識別組然後把它們放在一起。一個簡單的方法是使用lag(),以確定發生的變化,然後當發生改變時採取的值:

select col 
from (select t.*, 
      lag(col) over (partition by id order by ??) as prev_col 
     from t 
    ) t 
where prev_col is null or prev_col <> col; 

??是指定排序的列。

+0

在over條款我應該有一個分區的條款在事件中,我有更多的ID –

+0

是的,我只是把ID的順序由條款它的工作,我檢查了約6至7個ID。感謝您向我展示此邏輯 –

+0

@RyanGomes。 。 。這不能保證工作。如果這很重要,那麼你需要一個指定排序的列。表代表*無序*集的事實是非常基本的,如果你忽略這個簡單的事實,你就會有錯誤和沮喪。 –