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 に答える