我有一个包含大量列的大表,但为此我只对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以及结果。
答案 0 :(得分: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);
如果您想要包含其他表格,那么您只需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);