Sql 2017年购买但2016年未购买的客户
我有两张桌子:顾客,订单 如何找到在2017年购买了ìtem='A'或item='B',但在2016年没有购买任何item='A'或item='B'的所有客户 SQL看起来如何Sql 2017年购买但2016年未购买的客户,sql,oracle,Sql,Oracle,我有两张桌子:顾客,订单 如何找到在2017年购买了ìtem='A'或item='B',但在2016年没有购买任何item='A'或item='B'的所有客户 SQL看起来如何 任何帮助都将不胜感激这将是类似于: 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 (SEL
任何帮助都将不胜感激这将是类似于:
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。这取决于两个表的链接方式。我们需要样本数据和/表结构显示表结构和样本数据以及预期输出。如果您真的尝试并发布代码也很有帮助-这不是一个“为我做”的网站,您到目前为止尝试了什么???oracle的关键关键字是
减
。该解决方案是否适用于大型表?它会起作用,但正如许多人所说,如果您提供表名、列名和示例数据,我们可以为您提供更好的解决方案。