AS SELECT DISTINCT DDCLElement.Name
FROM DDCLElement 
WHERE 
 DDCLElement.DdsTypeId=3
 AND (DDCLElement.Id IN (SELECT * FROM #numeric_param_temp)) 
 AND DDCLElement.id not in (
	SELECT DISTINCT DDCLElementChild.Id 
	FROM DDCLElement 
		INNER JOIN DDCLValue ON DDCLElement.Id=DDCLValue.ElementId 
		INNER JOIN DDCLProperty ON DDCLValue.PropertyId=DDCLProperty.Id 
		INNER JOIN DDCLElement AS DDCLElementChild ON DDCLValue.ReferenceName=DDCLElementChild.Name 
	WHERE
		(DDCLElementChild.Id IN (SELECT * FROM #numeric_param_temp)) 
		AND (DDCLValue.ReferenceDdsTypeId=3) 
		AND DDCLValue.ValueTypeId in (2,4)
		AND (
			(DDCLElement.DdsTypeId=4 AND DDCLProperty.Name='PARAMETERS')
			OR
			(DDCLElement.DdsTypeId=11 AND DDCLProperty.Name IN ('CHANGES','OUTPUT','PARAMETERS','PROCESSING-STRUCTURE','SELECTION','SINGULAR-VIEW','VARIABLES') )
			OR
			(DDCLElement.DdsTypeId=12 AND DDCLProperty.Name IN ('RECORDS','STRUCTURE') )
			OR
			(DDCLElement.DdsTypeId=16 AND DDCLProperty.Name IN ('CHANGES','PROCESSING-STRUCTURE','SELECTION','SINGULAR-VIEW','VARIABLES') )
			OR
			(DDCLElement.DdsTypeId=26 AND DDCLProperty.Name IN ('PARAMETERS','VARIABLES') )
			OR
			(DDCLElement.DdsTypeId IN (27,28) AND DDCLProperty.Name IN ('PARAMETERS','PROCESSING-STRUCTURE','SELECTION','VIEW','VARIABLES') ) 
		) 
 )
 AND DDCLElement.id not in ( 
	SELECT DISTINCT DDCLElementChild.Id AS ChildId
	FROM DDCLElement 
		INNER JOIN DDCLValue AS DDCLValue_REC_GROUP ON DDCLElement.Id = DDCLValue_REC_GROUP.ElementId 
		INNER JOIN DDCLProperty AS DDCLProperty_REC_GROUP ON DDCLValue_REC_GROUP.PropertyId=DDCLProperty_REC_GROUP.Id 
		INNER JOIN DDCLElement AS DDCLElement_REC_GROUP ON DDCLValue_REC_GROUP.ReferenceName=DDCLElement_REC_GROUP.Name 
			AND DDCLValue_REC_GROUP.ReferenceDdsTypeId=DDCLElement_REC_GROUP.DdsTypeId 
		INNER JOIN DDCLValue AS DDCLValue_RECORD on DDCLElement_REC_GROUP.Id=DDCLValue_RECORD.ElementId 
		INNER JOIN DDCLProperty AS DDCLProperty_RECORD ON DDCLValue_RECORD.PropertyId=DDCLProperty_RECORD.Id 
		INNER JOIN DDCLElement AS DDCLElementChild ON DDCLValue_RECORD.ReferenceName=DDCLElementChild.Name 
			AND DDCLValue_RECORD.ReferenceDdsTypeId=DDCLElementChild.DdsTypeId 
	WHERE (DDCLElement.DdsTypeId=12) 
		AND (DDCLElementChild.Id IN (SELECT * FROM #numeric_param_temp)) 	
		AND (DDCLValue_REC_GROUP.ReferenceDdsTypeId=29) 
		AND (DDCLProperty_REC_GROUP.Name='STRUCTURE') 
		AND (DDCLValue_RECORD.ReferenceDdsTypeId=3) 
		AND (DDCLProperty_RECORD.Name='STRUCTURE') 	
 )	
 AND DDCLElement.id not in (
  	select DISTINCT DDCLElement.id from 
		  	DDCLElement inner join IdmsSubschemaRecords on DDCLElement.name = IdmsSubschemaRecords.RecordName and DDCLElement.ddstypeid = 3
		  				INNER JOIN StatementReference ON IdmsSubschemaRecords.ID = StatementReference.ResourceID and StatementReference.ResourceType = 77
		  				INNER JOIN OccurrencesStmt ON OccurrencesStmt.OccurID = StatementReference.OccurID
		  				INNER JOIN Programs ON Programs.ProgramID = OccurrencesStmt.ProgID 
  )
ORDER BY DDCLElement.Name 