0

我有 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')
4

1 回答 1

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
于 2013-09-22T10:16:35.473 回答