我想以特定方式对变量进行分组
我的数据:蓝色列是ID,红色是我的数据布局,绿色是我想要的输出
它将B之前的所有A分组,然后在下一个A之前对所有B进行分组然后对C进行分组
这是针对一个ID完成的,我希望所有Id都能实现这一点(每个id的信息都是动态的)
答案 0 :(得分: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;
??
是指定排序的列。