在按日期设置的分组中跨具有多个组的分组集复制值

Replicate values across a grouping set with multiple groups within the grouping set by date

下面是示例源数据:

预期输出如下:

数据基本上按 A_ID、B_ID、C_ID 分组,然后在其中每次 GR_CNT 为 NULL 时 [=33= 的对应值] 和 GR_SERIAL 为上述行复制。 LAST_DT和DATE_TIME按升序排列。
下面是我试过的查询,但我不确定如何获取位于数据中间的 GR_MATERIAL 和 GR_SERIAL 的值。

sel a.*,coalesce(max(GR_MATERIAL) over (partition by A_ID, B_ID, C_ID order by LAST_DT,DATE_TIME), -1) as col2,<br>
coalesce(max(GR_SERIAL) over (partition by A_ID, B_ID, C_ID order by LAST_DT,DATE_TIME), -1) as col3<br>
from table a<br>

使用所需的值为 GR_MATERIAL 和 GR_SERIAL 创建两个新列也可以。

我用的是TD16

没有 ROWS 您当前的查询 returns 所有行的最大值,即 Group Max.

你可能想要

LAST_VALUE(GR_MATERIAL IGNORE NULLS) 
over (partition by A_ID, B_ID, C_ID 
      order by LAST_DT DESC, DATE_TIME DESC)

这会将 Null 替换为以前的值。