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

SELECT Programs_1.ProgramName AS ProgramName, Programs_2.ProgramName AS LogicalView,
                    Statements.Description AS SMARTStatementType, Count(OccurrencesStmt.OccurID) AS
               stmtCount
FROM         #programWithAlias Programs_2 INNER JOIN (
                     #programWithAlias Programs_1 INNER JOIN (
                     StatementReference INNER JOIN (
                     Statements INNER JOIN
                                OccurrencesStmt ON Statements.StatementType = OccurrencesStmt.StatementType 
                               ) ON  StatementReference.OccurID = OccurrencesStmt.OccurID
                           ) ON Programs_1.ProgramID =OccurrencesStmt.ProgID 
                     ) ON  Programs_2.ProgramID = StatementReference.ResourceID
WHERE   ( (StatementReference.ResourceType = 5) AND (Programs_2.ProgramTypeID = 4)
			AND (Programs_1.ProgramName in (Select * from #string_param_temp)) 
		)
group BY Programs_1.ProgramName, Programs_2.ProgramName, Statements.Description
ORDER BY Programs_1.ProgramName, Programs_2.ProgramName 