【发布时间】:2019-12-06 06:42:49
【问题描述】:
我创建了这个查询来选择日期,前 14 个月的金额,在这种情况下,如果该月没有记录,则该月丢失,如果该特定月份是,请建议我添加零和月份的解决方案不见了。
SELECT dtSubscriptionRenewalDate,
DATE_FORMAT(dtSubscriptionRenewalDate, "%b %Y") AS month,
SUM(intPaymentAmount) as total
FROM `tbl_pi_payment`
WHERE strCurrencyCode = 'USD'
and dtSubscriptionRenewalDate <= NOW()
and dtSubscriptionRenewalDate >= Date_add(Now(),interval - 14 month)
group by month
ORDER BY `tbl_pi_payment`.`dtSubscriptionRenewalDate` ASC;
从结果中可以看出,那 NOv 2018 是缺失的。
【问题讨论】:
-
您有 2018 年 11 月的数据吗?
-
否,表中没有 2018 年 11 月的记录
-
这种情况下,您期望 2018 年 11 月的行应该如何出现在输出中?如果您需要开始日期和结束日期之间的所有可用月份,则必须使用日历表,或者您可以在另一个查询中生成月份列表,然后加入您的主查询。
-
请告诉我这是怎么做的?
-
创建月份统计表,然后加入您的查询。