以下是我的新 sql,因为我没有设法使用 Dale M 的建议,
SELECT
all_months.a_month_id AS month,
year($P{date}) as year,
count(case when clixsteraccount.rem_joindate between DATE_FORMAT($P{date}-INTERVAL 2 MONTH, '%Y-%m-01') AND $P{date} THEN clixsteraccount.rem_registerbycn end) AS
total_activation,
'ACTIVATION(No)' AS fake_column
FROM clixsteraccount right join all_months on all_months.a_month_id = date_format(clixsteraccount.rem_joindate,'%m') and
(clixsteraccount.rem_registrationtype = 'Normal')and(clixsteraccount.rem_kapowstatus='pending' or clixsteraccount.rem_kapowstatus='success')
GROUP BY year,month
HAVING month BETWEEN month(date_sub($P{date},interval 2 month)) and month($P{date})
所以,我要做的是创建一个包含两个字段的表,a_month_id(1,2,3...,12) 和 a_month(月份名称)。上面的 Sql 确实给了我我想要的,即显示前 3 个月,即使前几个月不存在。exp:数据从 7 月开始。所以,我想显示 5 月、6 月和 7 月的数据,例如 0,0,100。
问题发生在下个月或明年。当我尝试在 Jan 上根据参数生成 sql 时,它不像我想的那样工作。我确实意识到问题出在“有”条件上。有谁知道如何即兴创作这个 sql 以使其在明年继续生成。
提前谢谢你。