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);
有人可以帮助我使用 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);