Please check:
;WITH cte
as(SELECT DISTINCT convert(varchar(6),golivedate,112) gmm,
convert(varchar(6),claimcreated,112) cmm,
COUNT(convert(varchar(6),claimcreated,112)) OVER(PARTITION BY convert(varchar(6),golivedate,112),
convert(varchar(6),claimcreated,112)) ncount
FROM ##input
WHERE orid<>'PRACTICE')
,cte2 as(SELECT DISTINCT convert(varchar(6),claimcreated,112) cmm,
COUNT(convert(varchar(6),claimcreated,112)) OVER(PARTITION BY convert(varchar(6),golivedate,112),
convert(varchar(6),claimcreated,112)) acount
FROM ##input)
,cte3 as(SELECT DISTINCT cmm,COUNT(cmm) OVER(PARTITION BY cmm) [numberofdistinctproviders]
FROM
(SELECT DISTINCT ctextid,provid,convert(varchar(6),golivedate,112) cmm
FROM ##input) t)
,cte4 as(SELECT DISTINCT c1.cmm,[numberofdistinctproviders]
FROM cte c1
JOIN cte2 c2 ON c1.cmm=c2.cmm
JOIN cte3 c3 ON c1.cmm=c3.cmm)
,cte5 as(SELECT c1.cmm,c1.gmm,ncount*100/acount Utilizerate,[numberofdistinctproviders]
FROM cte c1
JOIN cte2 c2 ON c1.cmm=c2.cmm
JOIN cte3 c3 ON c1.cmm=c3.cmm
WHERE c1.cmm='202102')
,cte6 as(SELECT c1.cmm,c1.gmm,ncount*100/acount Utilizerate,[numberofdistinctproviders]
FROM cte c1
JOIN cte2 c2 ON c1.cmm=c2.cmm
JOIN cte3 c3 ON c1.cmm=c3.cmm
WHERE c1.cmm='202103')
SELECT c5.gmm,c5.Utilizerate [Utilizerate Feb 2021],
c6.Utilizerate [Utilizerate Mar 2021],c4.[numberofdistinctproviders]
FROM cte5 c5
JOIN cte6 c6 ON c5.gmm=c6.gmm
JOIN cte4 c4 ON c5.gmm=c4.cmm
Output:
Regards,
Echo
If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".