好,让我尽我所能解释一下。我需要为尚未续订某种产品(有效期为1年)的用户生成报告。我们称这个会员资格。
我只需要为每个“ client_no”提取最近的行,这些行与产品编号字符串匹配。我不希望提取重复的“ client_no”记录,但是可以有多个不同的“ product_id”。
查询:
SELECT * FROM client_educational
WHERE product_id IN ('1', '2', '3')
AND order_date < DATE_SUB(CURDATE(),INTERVAL 1 YEAR);
数据库设计:
client_no product order_date
54321 Membership 3 2018-04-15
12345 Membership 2 2017-04-15
12345 Membership 1 2016-04-15
58428 Membership 2 2015-04-15
58428 Membership 1 2014-04-15
当前结果:
client_no product order_date
12345 Membership 2 2017-04-15
12345 Membership 1 2016-04-15
58428 Membership 2 2015-04-15
58428 Membership 1 2014-04-15
所需的输出:
client_no product order_date
12345 Membership 2 2017-04-15
58428 Membership 2 2015-04-15
答案 0 :(得分:0)
请检查以下查询。 嵌套查询条件是淘汰过去1年内有订单的客户。
SELECT c.* FROM client_educational c
WHERE c.product_id IN ('1', '2', '3')
AND c.order_date < DATE_SUB(CURDATE(),INTERVAL 1 YEAR)
AND c.client_no NOT IN
(
SELECT client_no FROM client_educational
WHERE product_id IN ('1', '2', '3')
AND order_date >= DATE_SUB(CURDATE(),INTERVAL 1 YEAR)
)
group by c.client_no order by c.order_date desc