日期:2014-05-18  浏览次数:20512 次

一个sql的问题求教?
sql   server   2005

id   月份   联系人1,联系人2,联系人3
1   1   王1   王2   王3
1   2   王2   王3   王1
1   3   王1   王4   王5
1   4   王2   王1   王3

根据id汇总,要求汇总结果如下
1   王1   王2   王3

1   王2   王3   王4
......

汇总后联系人仍为3个字段,汇总值是联系人并集中的任意3个,
但是联系人1,联系人2,联系人3不能重复.




------解决方案--------------------
select tab01.id ,min(tab01.id1) as id1 ,min((case when minid1 <> tab01.id2 then tab01.id2 end)) as id2,
min((case when minid1 <> tab01.id3 and minid2 <> tab01.id3 then tab01.id3 end)) as id2
from tab01
inner join
(select tab01.id ,min(tab01.id1) as minid1 ,min((case when minid1 <> tab01.id2 then tab01.id2 end)) as minid2
from tab01 inner join (select id ,min(id1) as minid1 from tab01 group by id) a on tab01.id=a.id group by tab01.id ) b
on tab01.id=b.id
group by tab01.id

--结果
1 王1 王2 王3