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

SELECT  TOP 100 PERCENT 
         Paragraphs.ParaID, paragraphs.ParaName,
         gpf.StatementType, gpf.LogicalName, gpf.FileId, gpf.StartRow0, gpf.EndRow0, gpf.StartCol0, gpf.EndCol0,
         gpf.PathStr, PrinterFileDDS.PrinterFileName, 32, gpf.ProgID 
FROM 
     ( 
        (
         PrinterFileDDS LEFT OUTER JOIN Occurrences 
                           ON PrinterFileDDS.OccurId = Occurrences.OccurID
        ) 
     ) LEFT OUTER JOIN  (
	   ---//################################# 
	   --- query from GetPrinterFiles view
									 SELECT     files.LogicalName, statements.Description, occurrencesstmt.StartRow AS StartRow0, occurrencesstmt.StartCol AS StartCol0, 
													  occurrencesstmt.EndRow AS EndRow0, occurrencesstmt.EndCol AS EndCol0, paths.PathStr, pa.ProgramName, files.Name, 
													  files.ProgID AS ProgID, OccurrencesStmt.StatementType as StatementType, files.FileID as FileId, OccurrencesStmt.ParaID as occstmtparaid
								FROM         #programWithAlias pa INNER JOIN
													  (statements INNER JOIN
													  (((StatementReference INNER JOIN
													  OccurrencesStmt ON statementreference.OccurID = occurrencesstmt.OccurID) INNER JOIN
													  files ON statementreference.ResourceID = files.FileID) INNER JOIN
													  paths ON occurrencesstmt.PathID = paths.PathID) ON statements.StatementType = occurrencesstmt.StatementType) ON 
													  pa.ProgramID = occurrencesstmt.ProgID
								WHERE     (((files.ProgID) = 0) AND ((files.TypeCode) IS NULL OR
													  (files.TypeCode) = 32) AND ((statementreference.ResourceType) = 9) 
													  AND (pa.ProgramTypeID = 1)
													  AND pa.ProgramName IN (Select * from #string_param_temp))
								UNION
								SELECT     files.LogicalName, statements.Description, occurrencesstmt.StartRow AS StartRow0, occurrencesstmt.StartCol AS StartCol0, 
													  occurrencesstmt.EndRow AS EndRow0, occurrencesstmt.EndCol AS EndCol0, paths.PathStr, pa.ProgramName, files.Name, 
													  files.ProgID AS ProgID, OccurrencesStmt.StatementType as StatementType, files.FileID as FileId, OccurrencesStmt.ParaID as occstmtparaid
								FROM         #programWithAlias pa INNER JOIN
													  (statements INNER JOIN
													  (((StatementReference INNER JOIN
													  OccurrencesStmt ON statementreference.OccurID = occurrencesstmt.OccurID) INNER JOIN
													  files ON statementreference.ResourceID = files.FileID) INNER JOIN
													  paths ON occurrencesstmt.PathID = paths.PathID) ON statements.StatementType = occurrencesstmt.StatementType) ON 
													  pa.ProgramID = files.ProgID
								WHERE     (((files.TypeCode) IS NULL OR
													  (files.TypeCode) = 32) AND ((statementreference.ResourceType) = 9) 
													  AND (pa.ProgramTypeID = 1)
													  AND pa.ProgramName IN (Select * from #string_param_temp))
	   ---//################################
	   ) as gpf 
       ON PrinterFileDDS.PrinterFileName = gpf.Name OR
                      gpf.Name LIKE '%' + '-' + PrinterFileDDS.PrinterFileName OR
                      gpf.Name LIKE PrinterFileDDS.PrinterFileName + '-' + '%' OR
                      gpf.Name LIKE '%' + '-' + PrinterFileDDS.PrinterFileName + '-' + '%'
       inner join Paragraphs on gpf.occstmtparaid = Paragraphs.ParaID           
ORDER BY gpf.ProgramName, PrinterFileDDS.PrinterFileName 