在sql中用组中的重复值

ffx8fchx  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(336)

我正试图用in group在随后的行中重复一个行值。一个组可以有一个或多个标记。要求在填充标记的行和后续行中填充新的\u标记,直到在同一组中填充另一个标记或到达该组的末尾。

Current Table      Required Table

GROUPID SEQ TAG    GROUPID SEQ TAG NEW_TAG
------- --- ----   ------- --- --- --------
1       1           1       1       
1       2           1       2       
1       3           1       3       
1       4   4       1       4   4   4
1       5           1       5       4
1       6           1       6       4
1       7           1       7       4
1       8           1       8       4
2       1           2       1       
2       2           2       2       
2       3           2       3       
2       4           2       4       
2       5   5       2       5   5   5
2       6           2       6       5
2       7           2       7       5
2       8           2       8       5
2       9   9       2       9   9   9
2      10           2      10       9
2      11           2      11       9
z0qdvdin

z0qdvdin1#

select
    groupid,
    seq,
    tag,
    last_value(tag) ignore nulls over (
        partition by groupid
        order by seq
    ) as new_tag
from t
order by groupid, seq;

GRO SEQ TAG NEW_TAG
1   1    -   - 
1   2    -   - 
1   3    -   - 
1   4   4   4
1   5    -  4
1   6    -  4
1   7    -  4
1   8    -  4
2   1    -   - 
2   2    -   - 
2   3    -   - 
2   4    -   - 
2   5   5   5
2   6    -  5
2   7    -  5
2   8    -  5
2   9   9   9
2   10   -  9
2   11   -  9

19 rows selected.

相关问题