0

描述:我们想看看特定月份客户购买习惯的一些模式。我们担心从 6 个月前开始并持续两个月的三个月内向客户销售的图书。

我需要有关此问题的帮助 -问题:显示在讨论的三个月中恰好有一个月内购买过的所有客户的客户 ID 和姓名。例如,客户可能在第二个月进行了购买,但在第一个月或第三个月没有购买。

对类似问题的回答:显示所有在讨论中的任何一个月内没有购买的客户的客户 ID 和姓名。

set @rundate = current_date;
set @Mnth_1 = DATE_SUB(@rundate,  INTERVAL 6 MONTH);
set @Mnth_2 = DATE_SUB(@rundate,  INTERVAL 5 MONTH);
set @Mnth_3 = DATE_SUB(@rundate,  INTERVAL 4 MONTH);
Select Distinct c_id, c_name
From a_bkorders.bkv_CustOrders
Where order_id Not IN (
    Select order_id
    From a_bkorders.bkv_CustOrders
    Where Date_format(order_date, '%M %Y') = Date_format(@Mnth_1, '%M %Y'))
and order_id Not IN (
    Select order_id
    From a_bkorders.bkv_CustOrders
    Where Date_format(order_date, '%M %Y') = Date_format(@Mnth_2, '%M %Y'))
and order_id Not IN (
    Select order_id
    From a_bkorders.bkv_CustOrders
    Where Date_format(order_date, '%M %Y') = Date_format(@Mnth_3, '%M %Y'));
4

2 回答 2

0

试试这个我不确定,但可能对你有用。

set @rundate = current_date;
set @Mnth_1 = DATE_SUB(@rundate,  INTERVAL 6 MONTH);
set @Mnth_2 = DATE_SUB(@rundate,  INTERVAL 5 MONTH);
set @Mnth_3 = DATE_SUB(@rundate,  INTERVAL 4 MONTH);
Select Distinct c_id, c_name
From a_bkorders.bkv_CustOrders
Where order_id Not IN (
    Select order_id
    From a_bkorders.bkv_CustOrders
    Where Date_format(order_date, '%M %Y') = Date_format(@Mnth_1, '%M %Y') and Date_format(order_date, '%M %Y') = Date_format(@Mnth_2, '%M %Y') and Date_format(order_date, '%M %Y') = Date_format(@Mnth_3, '%M %Y') )
于 2013-10-28T08:31:54.873 回答
0

因此,如果您需要一段时间,您可以使用BETWEEN施工。另外我认为最好使用AND NOT EXISTSthen NOT IN


Select Distinct c_id, c_name
From a_bkorders.bkv_CustOrders
Where order_id NOT IN (
 Select order_id
 From a_bkorders.bkv_CustOrders
 Where order_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 MONTH) AND DATE_SUB(CURDATE(), INTERVAL 4 MONTH)
)

于 2013-10-28T12:41:08.187 回答