【发布时间】:2019-11-28 20:24:29
【问题描述】:
我在 Teradata 中有一个如下所示的表:
Account_Num Install_Due_Dt Install_Num Install_Pay_Dt
12805196 12/08/2019 1 12/08/2019
12805196 10/09/2019 2 ?
12805196 10/10/2019 3 ?
12805196 11/11/2019 4 13/09/2019
12805196 10/12/2019 5 ?
我需要用第一个非空值填充 Install_Pay_Dt 列。例如,它应该如下所示:
Account_Num Install_Due_Dt Install_Num Install_Pay_Dt
12805196 12/08/2019 1 12/08/2019
12805196 10/09/2019 2 12/08/2019
12805196 10/10/2019 3 12/08/2019
12805196 11/11/2019 4 13/09/2019
12805196 10/12/2019 5 13/09/2019
我使用的是 Teradata 15,所以我不能使用延迟。我一直在寻找很多,但我找不到解决方案。 ID 列是 Account_Num,订单列是 Install_num。
我尝试过这样做:
coalesce(Install_Pay_Dt, MAX(lag_)
OVER(PARTITION BY 1 ORDER BY Install_Num asc
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)) as lag
但它只填充第二行。
【问题讨论】:
-
你想要什么结果?你怎么不知道
account_num? -
我刚刚修改了这个例子。我希望现在它更清楚了。