基于公共字段

时间:2017-10-12 10:28:23

标签: sql sql-server

我需要使用什么SQL查询来获取基于公共参考编号的替代零件清单。以下示例中的公共引用是ELS,尽管实表超过100,000行,带有变量引用。

表A

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

结果

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

2 个答案:

答案 0 :(得分:2)

您可以使用cross join

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

答案 1 :(得分: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