@Statement_limit integer
AS SELECT DISTINCT 
                      dbo.IfInfo.ProgId, dbo.ProgramAliases.AliasName AS ProgramName, dbo.Paths.PathStr, dbo.OccurrencesStmt.StartRow, 
                      CASE WHEN dbo.Paths.PathID = Occurrences.PathID THEN 0 ELSE - 1 END AS IsCopy
FROM         dbo.Programs INNER JOIN
                      dbo.Occurrences ON dbo.Programs.OccurID = dbo.Occurrences.OccurID INNER JOIN
                      dbo.IfInfo INNER JOIN
                      dbo.OccurrencesStmt ON dbo.IfInfo.OccurId = dbo.OccurrencesStmt.OccurID INNER JOIN
                      dbo.Paths ON dbo.OccurrencesStmt.PathID = dbo.Paths.PathID ON dbo.Programs.ProgramID = dbo.OccurrencesStmt.ProgID INNER JOIN
		dbo.ProgramAliases ON dbo.ProgramAliases.ProgramId = dbo.Programs.ProgramID
			AND dbo.ProgramAliases.AliasType = 0
WHERE     (dbo.IfInfo.NumberOfStatementsInElseBlock > @Statement_limit) 
					AND (dbo.Programs.ProgramTypeID = 1) 
		  OR (dbo.IfInfo.NumberOfStatementsInThenBlock > @Statement_limit)
                        AND (dbo.Programs.ProgramTypeID = 1)
ORDER BY dbo.ProgramAliases.AliasName, dbo.Paths.PathStr, dbo.OccurrencesStmt.StartRow 