you dont need any extra join. just tweak derived table as below and see
Select dbo.[User].FirstName
, dbo.[User].LastName
, dbo.[User].Email
, dbo.FormInstance.FormInstanceId
, dbo.FormInstance.IsLocked
, dbo.FormInstance.InsertedDate
, dbo.FormInstance.UpdatedDate
, dbo.Form.FormName
, ts.SectionOrder
, ts.Cnt AS TotalSections
From dbo.[User]
Inner Join dbo.FormInstance
On dbo.[User].UserId = dbo.FormInstance.FkUserId
Inner Join dbo.InstanceLastVistiedSectionInfo
On dbo.FormInstance.FormInstanceId = dbo.InstanceLastVistiedSectionInfo.FkFormInstanceId
Inner Join dbo.Form
On dbo.FormInstance.FkFormId = dbo.Form.FormId
Inner Join (SELECT *, COUNT(1) OVER (PARTITION BY FkFormId) AS Cnt FROM dbo.FormSection) ts
On dbo.InstanceLastVistiedSectionInfo.FkFormSectionId = ts.FormSectionId
And dbo.Form.FormId = ts.FkFormId
Where dbo.FormInstance.FormInstanceId = @FormInstanceId
------------------------------------------------------------------------------------------------------
SQL Server MVP
http://visakhm.blogspot.com/
https://www.facebook.com/VmBlogs