Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 2017年购买但2016年未购买的客户_Sql_Oracle - Fatal编程技术网

Sql 2017年购买但2016年未购买的客户

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

我有两张桌子:顾客,订单 如何找到在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
(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的关键关键字是
。该解决方案是否适用于大型表?它会起作用,但正如许多人所说,如果您提供表名、列名和示例数据,我们可以为您提供更好的解决方案。