2017年购买但2016年未购买的客户[已结业]

问题描述 投票:-3回答:1

我有2个表:客户,订单如何在2017年找到所有购买的商品ìtem='A'或item ='B'但是在2016年没有购买任何商品='A'或商品='B' 。

SQL怎么样?

任何帮助,将不胜感激

sql oracle
1个回答
0
投票

它会是这样的:

SELECT c.id
FROM customers c
INNER JOIN orders o ON c.id = o.customer_id
WHERE o.item IN ('A', 'B')
AND YEAR(o.date) = 2017
AND NOT EXISTS
(SELECT 1
 FROM order o2
 WHERE o2.item IN ('A', 'B')
 AND YEAR(o2.date) = 2016
 AND o2.customer_id = o.customer_id)

这取决于您的表结构。但基本上您希望在主查询中找到2017年购买了商品A或B的客户。然后NOT EXISTS条款检查同一客户在前一年没有购买A或B.

© www.soinside.com 2019 - 2024. All rights reserved.