AS
BEGIN
  SET NOCOUNT ON


		  SELECT ProgramName, ProgramID, 
			    SgDBId, SgDBName, SgID, SgName,
			    SourceSgDBId, SourceSgDBName, SourceSgID, SourceSgName,
			    StatementTypeDescription, COUNT(OccurID) AS Occ
		  FROM (
				    SELECT p.AliasName AS ProgramName, p.ProgramID,
						 sg.DBId AS SgDBId,
						 db.DBName AS SgDBName,
						 sg.SegmentId AS SgID,
						 sg.SegmentName AS SgName,
						 srcsg.DBID AS SourceSgDBId,
						 srcsg.DBName AS SourceSgDBName,
						 srcsg.SegmentID AS SourceSgID,
						 srcsg.SegmentName AS SourceSgName,
						 st.Description AS StatementTypeDescription,
						 os.OccurID
				    FROM dbo.ProgramAliases p
					    INNER JOIN dbo.OccurrencesStmt os ON p.ProgramID = os.ProgID and p.AliasType = 0
					    INNER JOIN dbo.StatementReference sr ON os.OccurID = sr.OccurID
					    INNER JOIN dbo.Statements st ON sr.StatementType = st.StatementType 
					    INNER JOIN dbo.IMSDBSegments sg ON  sr.ResourceID = sg.SegmentId
					    INNER JOIN dbo.IMSDBInfo db ON db.DBId = sg.DBId
					    LEFT OUTER JOIN
									( SELECT sg.SegmentID, sg.SegmentName, sg.DBID, db.DBName
									  FROM dbo.IMSDBSegments sg 
										  INNER JOIN dbo.IMSDBInfo db ON db.DBId = sg.DBId
									) srcsg ON sg.SourceSegId = srcsg.SegmentID
				    WHERE sr.ResourceType = 209
						AND  EXISTS ( SELECT 1 
				                        FROM #numeric_param_temp t 
				                         WHERE t.ProgramID = p.ProgramID)
				 )s
          GROUP BY ProgramID, ProgramName, SgDBId, SgDBName, SgID, SgName, SourceSgDBId, SourceSgDBName, SourceSgID, SourceSgName, StatementTypeDescription
		  ORDER BY ProgramName, ProgramID, SgDBName, SgName, StatementTypeDescription
 
END
