特定の月に顧客になった顧客 ID をフィルター処理する where 句に基づいて、必要な行を返す SQL ステートメントがあります。私がする必要があるのは、これを過去 40 か月間毎月実行することですが、現在これは SQL を 40 回実行し、日付フィルターを変更することを意味します。
このクエリを実行するストアが 50 あるため、SQL で日付をフィルター処理するのではなく、この情報をグループ化する方法を知っている人はいますか?
私のSQLがあります:
select count(customerID), date_format(date_time, '%b %Y'), actionID
from transactions
where date_time = (select min(date_time)
from transactions as T
where actionID=2
and date_time > '2010-07-01 00:00:00'
and T.customerID = transactions.customerID)
and store_id= 1
and customerID IN
(
SELECT customerID
FROM transactions
where store_id = 1
and actionID in (1,6)
and date_time > '2010-07-01 00:00:00'
and date_time < '2010-08-01 00:00:00'
)
group by date_format(date_time, '%b %Y')
order by date_time
現在「2010-07-01 00:00:00」をフィルタリングしている日付は、フィルタリングではなくグループ化する必要があるため、2009 年 7 月から 2012 年 10 月までの各月の値を取得します。
どんな助けでも大歓迎です。
ありがとう、よろしくリチャード