AS 
set NOCOUNT ON;
IF OBJECT_ID('tempdb..#programWithAlias') IS NOT NULL DROP TABLE #programWithAlias
			 SELECT Programs.ProgramID, pa.AliasName AS ProgramName, Programs.ProgramTypeID, Programs.Ancestor, Programs.OccurID
			 INTO #programWithAlias 
			 FROM  dbo.Programs INNER JOIN dbo.ProgramAliases pa  ON Programs.ProgramID = pa.ProgramId and pa.AliasType = 0

SELECT DISTINCT  Resources.Name AS [TransactionName], Resources.ResourceID, 
      pa.ProgramID AS CalledProgId, pa.ProgramName AS CalledProgramName, 
      pa.ProgramTypeID AS CalledProgramTypeID, 
      pa.Ancestor AS CalledAncestorName, pa.OccurId, 0 AS isMapped
      FROM Resources INNER JOIN #programWithAlias pa ON Resources.ProgName = pa.ProgramName
 WHERE     (Resources.ResourceType = 14)
   AND (Resources.Name in (Select * from #string_param_temp))
  UNION
 SELECT DISTINCT Resources.Name, Resources.ResourceID, 
      pa.ProgramID AS CallingProgId, pa.ProgramName AS CallingProgramName, 
      pa.ProgramTypeID AS CallingProgramTypeID, 
      pa.Ancestor AS CallingAncestorName, pa.OccurId, 1 AS isMapped
    FROM Resources 
    INNER JOIN StatementReference ON StatementReference.ResourceID = Resources.ResourceID
    INNER JOIN OccurrencesStmt ON OccurrencesStmt.OccurID = StatementReference.OccurID
    INNER JOIN #programWithAlias pa ON OccurrencesStmt.ProgID = pa.ProgramID 
    INNER JOIN Paths on paths.PathID = OccurrencesStmt.PathID
    LEFT JOIN Programs AS Programs_1 on Programs_1.ProgramName = Resources.ProgName
 WHERE      (StatementReference.ResourceType = 14)
	 AND (Resources.Name in (Select * from #string_param_temp))
 ORDER BY TransactionName, isMapped