can you tell what is the need of dynamic sql here? what will @search contain? also you could replace the subqueries with join which will perform better when number of records is large. something likeSELECT tblSiteLogs.id, tblSiteLogs.dateAdded,t1.numPageViews , tmp.numSearches ,tmp.numEstablishmentViews FROM tblSiteLogs LEFT OUTER JOIN (SELECT siteLogId,COUNT(tblPageVisitLogs.id) AS numPageViews FROM tblPageVisitLogs GROUP BY siteLogId)t1ON tblSiteLogs.id = t1.siteLogIdLEFT OUTER JOIN (SELECT siteLogId ,COUNT( CASE WHEN establishmentId IS NULL THEN id ELSE NULL END) AS numSearches,COUNT( CASE WHEN establishmentId IS NOT NULL THEN id ELSE NULL END) AS numEstablishmentViews FROM tblSearchQueries GROUP BY siteLogId)tmpON tmp.siteLogId = tblSiteLogs.id