我有按日分组的付款表
select
day(created),
sum(payments.amount)
from payments
group by day(created)
输出
day | amount
1 | 432
2 | 4567
5 | 345
6 | 2345
7 | 97
这很好,但是我想在没有付款的日子里放一些0
。
预期产出:
day | amount
1 | 432
2 | 4567
3 | 0
4 | 0
5 | 345
6 | 2345
7 | 97
答案 0 :(得分:0)
由于您没有payments
表中的所有日期,您可以这样做:
select
d,
ifnull(sum(p.amount),0) sum_amount
from (
select 1 as d
union all
select 2
union all
select 3
union all
select 4
union all
select 5
union all
select 6
union all
select 7
) d
left join payments p
on day(p.created) = d.d
group by d
order by d
答案 1 :(得分:0)
您的表格中可能没有特定日期的数据,因此您无法要求引擎返回该数据。 简直不能,它基本上对人类日历一无所知: - )
因此,您必须回溯性地生成具有零的存根记录,或者使用@bernie建议的方法,这种特殊方式,或者在永久表格中保留从1到31的日期。