日期:2014-05-17  浏览次数:20481 次

求助:相同属性归类问题
本帖最后由 lily0804 于 2013-09-05 16:08:28 编辑
现有一张表Property 
内容如下
MemberID  P1   P2   P3 
  1             1A   2B   3A
  2             1B   2D   3C
  3             1A   2E   3B
  4             1C   2A   3D
  5             1D   2C   3E
  6             1E   2B   3C
P1 P2 P3分别为Member的三个属性
现要求将有任何一个属性相同的Member放到同一组中,结果如下
MemberID  GroupID
   1             1
   3             1
   6             1
   2             1
   4             2
   5             3
即Member1的P1和Member3相同,为同一组,P2和Member6相同,6也入组,由于Member6的P3和Member2相同,因此2也入组,以此类推,直到无法找到属性相同的成员为止(请考虑属性是N个的情况)。

------解决方案--------------------

create table #tb(MemberID  int ,P1 varchar(10),  P2 varchar(10),  P3 varchar(10))
insert into #tb
select 1,'1A','2B','3A'
union all select 2,'1B','2D','3C'
union all select 3,'1A','2E','3B'
union all select 4,'1C','2A','3D'
union all select 5,'1D','2C','3E'
union all select 6,'1D','2B','3C'

select MemberID,P1, 1 as groupID
from #tb a
where exists (select 1 from