<分区>
我有一个包含四列的数据库。 “检查日期”、“商店”、“产品”和“库存”。 'Date' 是检查库存的日期,'Shop' 只是商店的文本名称,'Product' 只是各种产品的文本名称,'Stocked' 是一个 bool 值,表示该商品是否有库存或不。它看起来像:
Date Shop Product Stocked
01/01/2018 Shop1 Product1 TRUE
02/01/2018 Shop1 Product2 TRUE
03/01/2018 Shop1 Product3 TRUE
04/01/2018 Shop1 Product4 FALSE
05/01/2018 Shop2 Product1 TRUE
06/01/2018 Shop2 Product2 TRUE
07/01/2018 Shop2 Product3 TRUE
08/01/2018 Shop2 Product4 TRUE
09/01/2018 Shop2 Product5 TRUE
10/01/2018 Shop3 Product2 FALSE
11/01/2018 Shop4 Product1 TRUE
12/01/2018 Shop4 Product2 TRUE
13/01/2018 Shop4 Product3 TRUE
14/01/2018 Shop4 Product4 TRUE
如果(且仅当)产品 A、B 和 C 曾在商店中存货,我需要返回商店名称。我遇到了困难,因为以下查询将根据每个 individual 产品是否有库存返回行,但只有当 all 产品有库存时我才需要它返回商店名称曾经被放养。
USE [Worldwide_Stock]
SELECT DISTINCT
Stock.Date AS 'Date',
Stock.Shop AS 'Location',
Stock.Product AS 'Item',
Stock.Stocked AS 'Stocked'
FROM
Stock with (nolock)
where
Stock.Product = 'ProductOne' OR
Stock.Product = 'ProductTwo' OR
Stock.Product = 'ProductThree' OR
Stock.Product = 'ProductFour' OR
Stock.Product = 'ProductFive')
AND
Stock.Stocked = 'True'
ORDER BY Stock.Shop
我对只有一两个存货的地点不感兴趣,我也不在乎目前是否有货(或者过去没有)。在上面的示例中,我只对返回“Shop2”感兴趣,因为它是唯一一个所有商品在一个阶段或另一个阶段有库存的地方。
我正在寻找以下格式的结果:
Shop Stocked
----------------
Shop2 True
是否可以使用 SQL 在本地执行此操作?我可以将它导出到 excel 之类的东西并让 VBA 来做,但我真的不想这样做。