我有一个 SQL 语句,它根据 where 子句返回我需要的行,该子句过滤我的 customerID,他们在特定月份成为客户。我需要做的是在过去 40 个月中每月运行一次,但目前这意味着运行 SQL 40 次并更改日期过滤器。
有谁知道我如何让 SQL 对这些信息进行分组而不是过滤日期,因为这需要我大约 15 个小时才能完成,因为有 50 家商店要运行这个查询。
这是我的 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 月每个月的值。
任何帮助将非常感激。
感谢和问候理查德