检查客户是否购买了5件特定商品

时间:2015-02-03 19:09:50

标签: sql sql-server-2008

我想检查并查看客户是否购买了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项我不想重置该值。

1 个答案:

答案 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;