我有一个名为'daily_budgets'的表:
+----+------------+----------+--------------+
| id | start_date | end_date | daily_budget |
+----+------------+----------+--------------+
| 1 | 25/04/18 | 29/04/18 | 500 |
+----+------------+----------+--------------+
| 2 | 26/04/18 | 27/04/18 | 1000 |
+----+------------+----------+--------------+
显示项目在指定时间范围(start_date - end_date)之间的每日预算。
然后我有另一个名为'year_2018'的地方,我在那里生成了一个time_series,其中包含2018年的所有日期:
+----------+
| date |
+----------+
| 01/01/18 |
+----------+
| 02/01/18 |
+----------+
| 03/01/18 |
+----------+
| 04/01/18 |
+----------+
| 05/01/18 |
+----------+
etc.
现在我只想加入这两个表,以便按日期对每日总计进行分组。结果表中的第一个日期应该是表'daily_budgets'中的最小start_date。
+----------+--------------+
| date | daily_budget |
+----------+--------------+
| 25/04/18 | 500 |
+----------+--------------+
| 26/04/18 | 1500 |
+----------+--------------+
| 27/04/18 | 1500 |
+----------+--------------+
| 28/04/18 | 500 |
+----------+--------------+
| 29/04/18 | 500 |
+----------+--------------+
非常感谢您的帮助!
我正在使用:i686-pc-linux-gnu上的PostgreSQL 8.0.2,由GCC gcc(GCC)3.4.2 20041017(Red Hat 3.4.2-6.fc3)编译,Redshift 1.0.2058
答案 0 :(得分:1)
根据日历表中的日期条件加入两个表格,其中包括开始和结束预算日期之间(包括)。然后按日期汇总以生成总计。
Hello
false
true
请注意,我在此处使用内部联接,这样可以过滤日历表中的任何日期,这些日期不会出现在预算表中的至少一个记录中。这应该强制您报告的最早日期也是预算表中最早的日期。