以下は、Dale Mのアドバイスを使用できない限り、私の新しいSQLです。
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(月の名前) の 2 つのフィールドを持つテーブルを作成します。上記のSQLは、前の3か月が存在しない場合でも、前の3か月を表示することを望んでいます。exp: データは 7 月に始まります。というわけで、5月、6月、7月のデータを0,0,100のように表示したいです。
問題は、翌月または翌年になると発生します。Jan のパラメーターに基づいて SQL を生成しようとすると、思ったように動作しません。問題は「持っている」状態にあることに気づきました。このSQLを即興で作成して、来年も生成し続ける方法を知っている人はいますか。
よろしくお願いします。