SELECT A.Projectname, TO_CHAR(A.ProjectDt :: DATE, 'dd - Month - yyyy') as ProjectDt, A.cost, string_agg(B.PCName, ', ') as ProjectCategory, C.TotalCategory FROM tblproject A INNER JOIN tblprojectcategory B on B.PCCode = ANY (string_to_array(A.PCCode,',')) INNER JOIN ( SELECT A.ProjectCode, COUNT(B.PCCode) TotalCategory FROM tblproject A INNER JOIN tblprojectcategory B on B.PCCode = ANY (string_to_array(A.PCCode,',')) GROUP BY A.ProjectCode ) C on A.ProjectCode = C.ProjectCode GROUP BY A.ProjectCode, C.TotalCategory ORDER BY A.ProjectName Asc;