You can but you won't see a huge speed improvement from this and it'll be a little harder to read for the juniors.
Turn the 2 updates into a select, the rest will be easy to figure out to do an update instead.
SELECT *, CASE WHEN IsBillingArea = 1 THEN dt1.ColName ELSE dt2.ColName END AS MergeColName
FROM ProvAnal
LEFT OUTER JOIN ( SELECT COUNT(a.INVNUM)
FROM invoices a INNER JOIN BillingAreas d ON d.BILLINGAREA = a.BA
WHERE b.DIVISION = d.BILLINGAREA AND b.PROVIDER = a.PROVIDER AND b.MEASURE = a.MEASURE
AND b.PERIOD = CONVERT(VARCHAR(6), INV_SER_DT, 112)
) dt1 ON...
LEFT OUTER JOIN
(SELECT COUNT(a.INVNUM)
FROM invoices a
WHERE b.DIVISION = a.DIVISION AND b.PROVIDER = a.PROVIDER AND b.MEASURE = a.MEASURE
AND b.PERIOD = CONVERT(VARCHAR(6), INV_SER_DT, 112)
) dt2 on...