AS SELECT ProgramAliases.AliasName AS ProgramName, 
              Files.LogicalName AS [File Name], 
              Statements.Description AS [Statement type], 
              Count(OccurrencesStmt.OccurID) AS Expr1, 
              Programs.Ancestor , Programs.ProgramID, PAncestor.ProgramID AS AncestorID, (Programs.Ancestor+ProgramAliases.AliasName) as k  
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 AliasName AS ProgramName, Programs.ProgramID, Programs.ProgramTypeID 
					FROM ProgramAliases INNER JOIN Programs on ProgramAliases.ProgramId = Programs.ProgramID 
					WHERE ProgramAliases.AliasType = 0) AS PAncestor on 
   				Programs.Ancestor = PAncestor.ProgramName and PAncestor.ProgramTypeID NOT IN (15, 16, 19)
WHERE (
((StatementReference.ResourceType)=9) 
AND (Programs.ProgramID in (Select * from #numeric_param_temp))
AND (Files.TypeCode <> 32 OR Files.TypeCode IS NULL)
) 
GROUP BY Programs.Ancestor, ProgramAliases.AliasName, Programs.ProgramID, PAncestor.ProgramID,Files.LogicalName, Statements.Description 
ORDER BY k, Programs.ProgramID, Files.LogicalName