首页 > 解决方案 > 如何从 start_date 到 end_date SQL 进行成本分析?

问题描述

我正在使用 Bigquery 进行费用分析。我有一张带start_date,的表end_dateexpense我必须将费用带到 start_date 和 end_date 之间的所有日期。我的桌子看起来像:

开始日期 结束日期 费用代码 数量 参考代码
2021 年 1 月 11 日 2021 年 13 月 11 日 3000 70,000.00 3001
2021 年 1 月 11 日 2021 年 11 月 30 日 2000 3,000.00 2005年

我的期望应该是:

开始日期 结束日期 费用代码 数量 参考代码 每日日期 每日费用
2021 年 1 月 11 日 2021 年 13 月 11 日 3000 70,000.00 3001 2021 年 1 月 11 日 5384.615385
2021 年 1 月 11 日 2021 年 13 月 11 日 3000 70,000.00 3001 2021 年 2 月 11 日 5384.615385
2021 年 1 月 11 日 2021 年 13 月 11 日 3000 70,000.00 3001 2021 年 3 月 11 日 5384.615385
... ... ... ... ... ... ...
2021 年 1 月 11 日 2021 年 13 月 11 日 3000 70,000.00 3001 2021 年 13 月 11 日 5384.615385
2021 年 1 月 11 日 2021 年 11 月 30 日 2000 3000 2005年 2021 年 1 月 11 日 100
2021 年 1 月 11 日 2021 年 11 月 30 日 2000 3000 2005年 2021 年 2 月 11 日 100
... ... ... ... ... 2021 年 11 月 30 日 100

标签: sqlgoogle-bigquery

解决方案


考虑以下方法

select *, 
  round(Amount / (1 + date_diff(End_Date,Start_Date, day)), 2) as Daily_expense
from data, 
unnest(generate_date_array(Start_Date, End_Date)) Daily_date           

如果应用于您问题中的样本数据 - 输出是

在此处输入图像描述


推荐阅读