我使用 psql v.10.5
我有一个像这样的结构表:
| date | total |
-------------------------
| 01-01-2018 | 50 |
| 05-01-2018 | 90 |
| 30-01-2018 | 20 |
Run Code Online (Sandbox Code Playgroud)
如何按月获取回顾数据,但数据显示连续 30 天,我希望数据显示如下:
| date | total |
-------------------------
| 01-01-2018 | 50 |
| 02-01-2018 | 0 |
| 03-01-2018 | 0 |
| 04-01-2018 | 0 |
| 05-01-2018 | 90 |
.....
| 29-01-2018 | 0 |
| 30-01-2018 | 20 |
Run Code Online (Sandbox Code Playgroud)
我试过这个查询:
SELECT * FROM date
WHERE EXTRACT(month FROM "date") = 1 // dynamically
AND EXTRACT(year FROM "date") = 2018 // dynamically
Run Code Online (Sandbox Code Playgroud)
但结果不是我所期望的。还有我动态创建的月份和日期的参数。
任何帮助将不胜感激
使用函数generate_series(start, stop, step interval),例如:
select d::date, coalesce(total, 0) as total
from generate_series('2018-01-01', '2018-01-31', '1 day'::interval) d
left join my_table t on d::date = t.date
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2774 次 |
| 最近记录: |