【发布时间】:2018-01-22 09:07:27
【问题描述】:
我有一个包含四列的数据库。 “检查日期”、“商店”、“产品”和“库存”。 'Date' 是检查库存的日期,'Shop' 只是商店的文本名称,'Product' 只是各种产品的文本名称,'Stocked' 是一个布尔值,如果该商品有库存或不。它看起来像:
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 产品是否有库存返回行,但只有当 所有 产品有曾经有货。
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来做,但我真的不想这样做。
【问题讨论】:
-
使用该表数据,同时指定预期结果。