我有ItemDetails表,其中包含商品和供应商信息。项目供应商关联有重复记录 - 在我的方案中没问题。
现在,我需要找出存在多个不同供应商的商品。这有什么SQL查询?我正在寻找多种方法。
以下查询不正确。它列出了'A1'和'A2'。正确的查询应仅返回“A2”。
SELECT Item FROM @ItemDetails
GROUP BY Item
HAVING COUNT(*) > 1
表
DECLARE @ItemDetails TABLE (MyPrimaryKey INT, Item VARCHAR(5), VendorID VARCHAR(5))
INSERT INTO @ItemDetails VALUES (1, 'A1', 'V1')
INSERT INTO @ItemDetails VALUES (2, 'A1', 'V1')
INSERT INTO @ItemDetails VALUES (2, 'A2', 'V1')
INSERT INTO @ItemDetails VALUES (2, 'A2', 'V2')
答案 0 :(得分:1)
这个想法是收集由单个供应商生产的产品,然后过滤掉其他产品
select a.item
from ItemDetails as a
where a.item not in (
select b.item
from ItemDetails as b
group by b.Item, b.VendorId
having count(*) = 1
)
但一分钟后我找到了最简单的方法
select item
from ItemDetails
group by Item
having count(distinct VendorId) > 1