如何根据其他列的值更新列

问题描述 投票:2回答:1

我有一个如下表

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

。但是不知道如何包括方差字段来分割集合。

sql aggregate greenplum
1个回答
0
投票

尝试如下

© www.soinside.com 2019 - 2024. All rights reserved.