0

我有一个包含大量列的大表,但为此我只会对 3 列感兴趣,所以我的日期如下。

PartNumber  BrandID PartTerminonogyID
1234AD      343
DD93873 DAB 343
1-8383-343  STE 4424
444 OTE 5656
444 NYT 4543
3434    IDY 4543
64545   IDH 3455
64545   IDH 8585

我想要的是找到具有多个 PartTerminologyID 的每个 PartNumber/BrandID 组合

请记住,我不能单独确定零件编号,因为不同的制造商可能对完全不同的物品有相同的零件编号。所以标识符是 PartNumber/BrandID 组合,如果有帮助,您可以将其视为 SKU。而我想要查看的是同一 SKU 具有多个 PartTerminologyID 的所有情况。我也希望看到每个 PartTerminologyID 的结果。

4

1 回答 1

2

您可以使用以下实现一个HAVING子句和一个GROUP BY

select partnumber, brandid, PartTerminonogyID
from yourtable t
where exists (select partnumber, brandid
              from yourtable t1
              where t.partnumber = t1.partnumber
                and t.brandid = t1.brandid
              group by partnumber, brandid
              having count(distinct PartTerminonogyID) >1);

请参阅带有演示的 SQL Fiddle

如果您想包含其他表格,那么您将只使用JOIN它们:

select t.partnumber, t.brandid, t.PartTerminonogyID, p.partTerminologyName 
from yourtable t
inner join parts p
  on t.PartTerminonogyID = p.PartTerminonogyID
where exists (select partnumber, brandid
              from yourtable t1
              where t.partnumber = t1.partnumber
                and t.brandid = t1.brandid
              group by partnumber, brandid
              having count(distinct PartTerminonogyID) >1);
于 2013-01-31T21:07:49.863 回答