use Omniture select VLR.YearMonth ,VLR.VisitorID ,VLR.ConsultantID ,VLR.Visits ,CL.LevelID ,CL.[Status] ,IfNew = case when (VLR.YearMonth=startmonth) then '1' else '0' end into #VisitsLogin from VisitsLoginRecord VLR inner join (select *,CONVERT(varchar(6),StartDate,112) as startmonth from ConsultantInfo) vstime on VLR.ConsultantID=vstime.ConsultantID inner join ConsultantLevel CL on VLR.ConsultantID=CL.ConsultantID and VLR.YearMonth=CL.YearMonth select COUNT(*) from #VisitsLogin --ALL访问记录与等级记录关联 select V.YearMonth ,V.VisitorID ,V.ConsultantID ,v.Visits ,V.ifnew ,CL.LevelID ,CL.[Status] into #temp1 from #VisitsLogin V inner join dbo.[ConsultantLevel] CL on V.ConsultantID=CL.ConsultantID and V.YearMonth=CL.YearMonth --New访问记录与等级记录关联 select V.YearMonth ,V.VisitorID ,V.ConsultantID ,v.Visits ,V.ifnew ,NCL.LevelID ,NCL.[Status] into #tempnew1 from #VisitsLogin V inner join dbo.[ConsultantLevel] NCL on V.ConsultantID=NCL.ConsultantID and V.YearMonth=NCL.YearMonth and V.ifnew=1 --Old访问记录与等级记录关联 select V.YearMonth ,V.VisitorID ,V.ConsultantID ,v.Visits ,V.ifnew ,OCL.LevelID ,OCL.[Status] into #tempold1 from #VisitsLogin V inner join dbo.[ConsultantLevel] OCL on V.ConsultantID=OCL.ConsultantID and V.YearMonth=OCL.YearMonth and V.ifnew<>1 --ALL访问顾问人数 select YearMonth ,COUNT(distinct ConsultantID) as ConNum from #temp1 group by YearMonth --New访问顾问人数 select YearMonth ,COUNT(distinct ConsultantID) as ConNum from #tempnew1 group by YearMonth --Old访问顾问人数 select YearMonth ,COUNT(distinct ConsultantID) as ConNum from #tempold1 group by YearMonth --All独立设备访问顾问数 select * into #temprank1 from ( select YearMonth ,VisitorID ,ConsultantID ,ifnew ,rank() over (partition by VisitorID order by CONVERT(int,LevelID) desc ) as Ranknom from #temp1) as st where st.Ranknom=1 select YearMonth ,COUNT(distinct ConsultantID) from #temprank1 group by YearMonth --New独立设备访问顾问数 select * into #tempnewrank1 from ( select YearMonth ,VisitorID ,ConsultantID ,ifnew ,RANK() over (partition by VisitorID order by CONVERT(int,LevelID) desc ) as RankNum from #temp1 ) as st where st.RankNum=1 and st.ifnew=1 select YearMonth ,COUNT(distinct ConsultantID) from #tempnewrank1 group by YearMonth --Old独立设备访问顾问数 select * into #tempoldrank1 from ( select YearMonth ,VisitorID ,ConsultantID ,ifnew ,rank() over (partition by VisitorID order by CONVERT(int,LevelID) desc ) as RankNum from #temp1 ) as st where st.RankNum=1 and st.ifnew<>1 select YearMonth ,COUNT(distinct ConsultantID) from #tempoldrank1 group by YearMonth