我有按日期排序的行,我需要根据在分组中创建“中断”的字段将其分成单独的组。断开的行将被删除,因此它们需要位于自己的组中。答案可能存在于某处,但我找不到任何东西。我可以用循环来做到这一点,但我不想这样做。
示例:
Date BreakField Group (this is the field I need)
2018-07-01 0 1
2018-07-02 0 1
2018-07-03 0 1
2018-07-04 1 0
2018-07-05 0 2
2018-07-06 0 2
最佳答案
您可以使用row_numbers
的差异来定义组:
select Date, BreakField, (case when breakfield = 1 then 0
else dense_rank() over (order by grp)
end) as Group
from (select *, row_number() over (order by date) -
row_number() over (partition by breakfield order by date) as grp
from table
) t
order by date;
关于SQL:如何将有序行分成组;根据分组行进行拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51355995/