动态分组

时间:2016-09-21 11:33:01

标签: sql sql-server sql-server-2012

我想以特定方式对变量进行分组

我的数据:蓝色列是ID,红色是我的数据布局,绿色是我想要的输出

enter image description here

它将B之前的所有A分组,然后在下一个A之前对所有B进行分组然后对C进行分组

这是针对一个ID完成的,我希望所有Id都能实现这一点(每个id的信息都是动态的)

1 个答案:

答案 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;

??是指定排序的列。