我有一个如下表
row_wid id code sub_code item_nbr orc_cnt part_cnt variance reporting_date var_start_date
1 1 ABC PQR 23AB 0 1 1 11-10-2019 NULL
2 1 ABC PQR 23AB 0 1 1 12-10-2019 NULL
3 1 ABC PQR 23AB 1 1 0 13-10-2019 NULL
4 1 ABC PQR 23AB 1 2 1 14-10-2019 NULL
5 1 ABC PQR 23AB 1 3 2 15-10-2019 NULL
我必须为id,code,sub_code和item_nbr的每个组合使用min(reporting_date)的min(reporting_date)更新var_start_date列,直到方差字段为零为止。方差= 0的行应为空var_start_date。并且此后的下一行应具有下一个min(var_start_date。)。仅供参考,方差的计算方式为par_cnt-orc_cnt
所以我的输出应该看起来像这样-
row_wid id code sub_code item_nbr orc_cnt part_cnt variance reporting_date var_start_date
1 1 ABC PQR 23AB 0 1 1 11-10-2019 11-10-2019
2 1 ABC PQR 23AB 0 1 1 12-10-2019 11-10-2019
3 1 ABC PQR 23AB 1 1 0 13-10-2019 NULL
4 1 ABC PQR 23AB 1 2 1 14-10-2019 14-10-2019
5 1 ABC PQR 23AB 1 3 2 15-10-2019 14-10-2019
我正在尝试使用下面的查询编写一个函数,以将数据划分为集合。
select distinct min(reporting_date) over (partition by id, code,sub_code,item_nbr
order by row_wid ),
rank() over (partition by id, code,sub_code,item_nbr
order by row_wid) as rnk,id, code,sub_code,item_nbr,orc_cnt,part_cnt,variance,row_wid
from table T1
。但是不知道如何包括方差字段来分割集合。
尝试如下