AS SELECT Files.LogicalName AS [File Name], 
   ProgramAliases.AliasName AS ProgramName, 
   Statements.Description AS [Statement type], 
   Count(OccurrencesStmt.OccurID) AS Expr1, Programs.Ancestor 
   , (Programs.Ancestor+ProgramAliases.AliasName) as k, pth.PathStr 
FROM (
    (
        (StatementReference INNER JOIN OccurrencesStmt 
            ON StatementReference.OccurID = OccurrencesStmt.OccurID
         ) INNER JOIN Files 
           ON StatementReference.ResourceID = Files.FileID
     ) INNER JOIN Programs 
       ON OccurrencesStmt.ProgID = Programs.ProgramID
	   INNER JOIN ProgramAliases ON Programs.ProgramID = ProgramAliases.ProgramId and ProgramAliases.AliasType = 0
) INNER JOIN Statements 
  ON StatementReference.StatementType = Statements.StatementType 
   LEFT JOIN ( SELECT 1 AS Flag, AliasName, ProgramTypeID	FROM dbo.Programs  INNER JOIN dbo.ProgramAliases
		 					ON Programs.ProgramID = ProgramAliases.ProgramId and ProgramAliases.AliasType = 0
						    GROUP BY AliasName, ProgramTypeID 	    HAVING COUNT(*) > 1) f 
							on ProgramAliases.AliasName = f.AliasName and Programs.ProgramTypeID = f.ProgramTypeID
   LEFT JOIN Occurrences occ ON occ.OccurID = Programs.OccurID
   LEFT JOIN dbo.Paths pth ON pth.PathID = occ.PathID AND f.Flag = 1
WHERE 
(
   ((StatementReference.ResourceType)=9)
   AND (Files.FileID in (Select * from #numeric_param_temp))
) 
GROUP BY Files.LogicalName, Programs.Ancestor, ProgramAliases.AliasName, Statements.Description, pth.PathStr 
ORDER BY Files.LogicalName, k