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