List<type>
在上述情况下,有三个ID为1,2,3的客户。共有ID为a,b,c的三种产品。退货日期指定退货的日期。如果为NULL,则不返回产品。我想查询所有根本不拥有任何产品的所有customer_ID。
客户customer_ID product_id product_returned_date
1 a 12/12/2018
1 b NULL
2 a NULL
3 b 24/02/2018
2 c NULL
1 c 23/05/2017
当前拥有产品1
,因为它们退回了b
和a
。
客户c
当前拥有产品2
和a
。
客户c
已退货产品3
,因此目前没有任何产品。
因此,我想回头客3。
尝试:
b
但是,这不能确保客户没有持有任何产品。
答案 0 :(得分:1)
如果我的理解正确,您希望所有产品都有退货日期的客户。您可以使用聚合来实现:
select customer_id
from t
group by customer_id
having count(*) = count(product_returned_date);
答案 1 :(得分:1)
在这种情况下
3 b 24/02/2018
3 b 24/02/2018
我正在考虑使用此查询。
select customer_ID from tableA
group by customer_ID, product_id
having count(distinct customer_ID, product_ID) = 1;
答案 2 :(得分:0)
这应该从不存在返回日期为空的行(返回的所有产品)的表中选择所有customer_ID。
SELECT
a.customer_ID
FROM
table a
WHERE
NOT EXISTS (
SELECT
customer_ID
FROM
table
WHERE
customer_ID = a.Customer_ID
AND
product_returned_date IS NULL
)