考虑到这两个不同的项目组,如何找到在set2中跨越一个以上组的set1组?换句话说,如何找到set1中无法被set2中单个组覆盖的组?
例如,对于下面的表格,A(1、2、5)是唯一横跨s1(1、2、3)和s2(2、3、4、5)的组。B和C都不是答案,因为它们都被单个组s2覆盖。
我更喜欢使用SQL(可用的Sql Server 2008 R2)。
谢谢。
请使用此sqlfiddle进行尝试:http://sqlfiddle.com/#!6/fac8a/3 或者使用下面的脚本生成临时表来尝试答案:
例如,对于下面的表格,A(1、2、5)是唯一横跨s1(1、2、3)和s2(2、3、4、5)的组。B和C都不是答案,因为它们都被单个组s2覆盖。
我更喜欢使用SQL(可用的Sql Server 2008 R2)。
谢谢。
set1 set2
+---------+----------+ +---------+----------+
| group | item | | group | item |
`````````````````````+ `````````````````````+
| A | 1 | | s1 | 1 |
| A | 2 | | s1 | 2 |
| A | 5 | | s1 | 3 |
| B | 4 | | s2 | 2 |
| B | 5 | | s2 | 3 |
| C | 3 | | s2 | 4 |
| C | 5 | | s2 | 5 |
+---------+----------+ +---------+----------+
请使用此sqlfiddle进行尝试:http://sqlfiddle.com/#!6/fac8a/3 或者使用下面的脚本生成临时表来尝试答案:
create table #set1 (grp varchar(5),item int)
create table #set2 (grp varchar(5),item int)
insert into #set1 select 'a',1 union select 'a',2 union select 'a',5 union select 'b',4 union select 'b',5 union select 'c',3 union select 'c',5
insert into #set2 select 's1',1 union select 's1',2 union select 's1',3 union select 's2',2 union select 's2',3 union select 's2',4 union select 's2',5
select * from #set1
select * from #set2
--drop table #set1
--drop table #set2