2017-10-12 7 views
2

共通の参照番号に基づいて代替パーツリストを取得するには、どのSQLクエリを使用する必要がありますか。以下の例の共通参照はELSですが、実際の表は変数参照付きの100,000行を超えています。一般的なフィールドに基づくSQLクエリ

**Reference  Part** 
ELS   test1 
ELS   test2 
ELS   test3 

結果は

**Part   Alternative Part** 
test1   test2 
test1   test3 
test2   test1 
test2   test3 
test3   test1 
test3   test2 

答えて

2

あなたはcross joinを使用することができます。参加

select t1.part, t2.part 
from t t1 join 
    t t2 
    on t1.els = t2.els and t1.part <> t2.part; 
+0

ソートされている、ありがとう! – Emma

+0

テーブル全体でエラーが発生しました - メッセージ1101、レベル17、状態10、行4 ファイルグループ 'DEFAULT'のディスク領域が不足しているため、データベース 'TEMPDB'に新しいページを割り当てることができませんでした。ファイルグループ内のオブジェクトを削除したり、ファイルグループにファイルを追加したり、ファイルグループ内の既存ファイルに対して自動拡張を設定するなど、必要な領域を作成します。 – Emma

+0

@エムマ。 。 。おそらく、いくつかの非常に大きなグループがあります。 –

2

これは、簡単な自己で行うことができます

create table #test (reference varchar(10), part varchar(10)) 
insert into #test values ('ELS', 'test1'), ('ELS', 'test2'), ('ELS', 'test3') 

select t1.part as part, 
     t2.part as alternate_part 
from #test t1 
    inner join #test t2 on t1.reference = t2.reference 
where t1.part <> t2.part 
order by 1 

drop table #test 

結果は、この

part alternate_part 
---- -------------- 
test1 test2 
test1 test3 
test2 test1 
test2 test3 
test3 test1 
test3 test2 
関連する問題