【发布时间】:2020-12-28 15:36:20
【问题描述】:
我有一张如下所示的表格:
Account Value Last_Day_in_Month
ABC 7 2018-06-30
ABC 12 2018-06-30
ABC 3 2018-08-31
FGH 57 2019-01-31
FGH 13 2019-03-31
FGH 127 2019-03-31
对于每个帐户,我需要填写与每个月的最后一天对应的缺失日期,以便结果表仅填写上个月的值(您会注意到另外两行)
Account Value Last_Day_in_Month
ABC 7 2018-06-30
ABC 12 2018-06-30
ABC 12 2018-07-31
ABC 3 2018-08-31
FGH 57 2019-01-31
FGH 57 2019-02-28
FGH 13 2019-03-31
FGH 127 2019-03-31
我有许多帐户,每个帐户都有不同的开始和停止时间(Last_Day_in_Month),所以我只需要填写每个帐户的最小和最大月份之间的缺失月份。因为我可能有多个值对应于每个帐户的一个月结束日期,所以我当前的解决方案是使用带有添加一天的案例语句的潜在客户和仅包含每个月的最后一天的日期表并执行交叉加入。但是,我认为这很混乱,而且我确信有更好的方法我不知道。这是我目前的解决方案...
select
*,
lead(Last_Day_in_Month,1)over (
partition by Account
order by Last_Day_in_Month
) as intermed2,
case
when intermed2 = Last_Day_in_Month
then dateadd('day',1, intermed2)
else intermed2
end as next_last_day
from table
cross join dates
where dates.date_actual >= table.Last_Day_in_Month
and dates.date_actual < table.next_last_day
欢迎提出任何建议。
【问题讨论】:
标签: amazon-web-services date amazon-redshift