【发布时间】:2020-08-11 17:23:08
【问题描述】:
使用 Amazon Redshift。 还有一个包含所有可用日历日期的日期表。
问题:如何获取开始时间戳 (created_at) 和结束时间戳 (end_at) 并添加一列,将开始时间戳添加 1 个月直到结束时间戳。
我有一张桌子:
- user_id,
- plan_id,
- created_at,
- ended_at,(可以为空)
因此,如果我的 created_at 时间戳为 2019-07-11,我将有一列包含 2019-08-11、2019-09-11、2019-10-11 等的附加行。目标是将用户每月支付的金额与仅以开始和结束日期开始的日期相关联。
编辑:
我使用了以下查询,该查询在存在 end_at 时间戳时有效,但是,当它为空时,我需要填充下个月,直到存在 end_at 时间戳。
select
ps.network_id,
ps.user_id,
ps.plan_id,
ps.created_at,
extract('day' from ps.created_at) as extract_day,
d.calendar_date,
ps.archived_at as ended_at,
ps.application_fee_percent,
pp.amount,
pp.interval,
pp.name
from payments_subscriptions ps
left outer join dates d on extract('day' from date_trunc('day',d.calendar_date)) = extract('day' from ps.created_at) AND date_trunc('day',d.calendar_date) >= date_trunc('day',ps.created_at) AND date_trunc('day',d.calendar_date) < date_trunc('day',ps.archived_at)
left outer join payments_plans pp on ps.plan_id = pp.id
where ps.network_id = '1318990'
and ps.user_id = '2343404'
order by 3,6 desc
【问题讨论】:
标签: sql amazon-redshift