SQL 按值的变化对日期进行分组

SQL Grouping dates by change in value

有人可以帮助我使用 SQL 实现以下目标吗?在此先感谢社区 - 没有你们,我们不可能做到这一点。

输入数据

ITEM          YEAR WEEK QTY
SWEETWATER420   201828  1
SWEETWATER420   201829  1
SWEETWATER420   201830  1
SWEETWATER420   201831  1
SWEETWATER420   201832  1
SWEETWATER420   201833  150
SWEETWATER420   201834  150
SWEETWATER420   201835  150
SWEETWATER420   201836  150
SWEETWATER420   201837  150
SWEETWATER420   201838  1
SWEETWATER420   201839  1
SWEETWATER420   201840  1

想要的结果

ITEM           QTY  BEGINNING YW    ENDING YW
SWEETWATER420   1   201828          201832
SWEETWATER420   150 201833          201837
SWEETWATER420   1   201838          201840

这是一个间隙和孤岛问题。而Hana支持row_number(),所以可以利用行号的差异:

select item_qty, min(yearweek), max(yearweek)
from (select t.*,
             row_number() over (partition by item order by yearweek) as seqnum,
             row_number() over (partition by item, qty order by yearweek) as seqnum_1
      from t
     ) t
group by item, qty, (seqnum - seqnum_1)
order by item, qty, min(yearweek);