我想检查并查看客户是否购买了3件特定商品。如果客户购买了我想要为该客户的所有商品将柜台重置为零的商品。需要购买的物品是1,2和3.
CustomerID | Item# | TimesPurchased
1 | 1 | 2
1 | 2 | 1
1 | 3 | 1
1 | 4 | 1
2 | 1 | 1
2 | 1 | 1
在此示例中,客户1已购买了所需的所有商品。我想将TimesPurchased列重置为0,仅为该客户的所有3个项目。我希望结果看起来像这样:
CustomerID | Item# | TimesPurchased
1 | 1 | 0
1 | 2 | 0
1 | 3 | 0
1 | 4 | 1
2 | 1 | 1
2 | 1 | 1
我正在努力解决如何构建查询,从而拉动购买了所有这三项的客户。这是怎么做到的?此外,还有第4项我不想重置该值。
答案 0 :(得分:0)
您可以通过以下方式确定购买了这三个项目的客户:
select customerid
from purchases
where itemid in (1,2, 3)
group by customerid
having count(distinct itemid) = 3;
然后,您可以将其合并到update
:
update p
set timespurchased = 0
from purchases p join
(select customerid
from purchases
where itemid in (1,2, 3)
group by customerid
having count(distinct itemid) = 3
) c
on p.customerid = c.customerid;