2016-09-21 75 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。 。 。这不能保证工作。如果这很重要,那么你需要一个指定排序的列。表代表*无序*集的事实是非常基本的,如果你忽略这个简单的事实,你就会有错误和沮丧。 –