Here i have this proc where i need to insert data into target table 4.In all these subqueries first_scan_issues/last_scan_issues/Prior_scan_issues where i need to join based on the scan_id but same time i should not use the scan_id in select query where the grouping result sets are splitting into more granularity.Even i tried with 'Partition by clause' it also gives more number of records. How can we avoid scan_id column and should use the same as join condition. Target table 4
CREATE OR REPLACE PROCEDURE PROC AS
BEGIN
INSERT INTO table4
SELECT first_scan_issues.SOA_SECTOR,
first_scan_issues.SOA_REGION,
a.PROJECT,
a.SOLUTION,
first_scan_issues.CNT1,
first_scan_issues.CNT2,
file_scans.CNT7,
project_files_count.COUNT,
last_scan_issues.CNT3,
last_scan_issues.CNT4,
file_scans.CNT8,
prior_scan_issues.CNT5,
prior_scan_issues.CNT6,
file_scans.CNT9,
CURRENT_DATE
FROM( select PROJECT,SOLUTION,FIRST_SCAN_ID,LAST_SCAN_ID,PRIOR_SCAN_ID from table1 order by project
)a
LEFT OUTER JOIN
(
select SOA_SECTOR,SOA_REGION,PROJECT,SOLUTION,SCAN_ID,
COUNT(DISTINCT ISSUE_ID) CNT3,
COUNT(DISTINCT FILE_ID) CNT4
from table2 group by SOA_SECTOR,SOA_REGION,PROJECT,SOLUTION,SCAN_ID
) first_scan_issues on first_scan_issues.SCAN_ID = a.FIRST_SCAN_ID AND first_scan_issues.PROJECT =a.PROJECT
LEFT OUTER JOIN
(
select SOA_SECTOR,SOA_REGION,PROJECT,SOLUTION,SCAN_ID,
COUNT(DISTINCT ISSUE_ID) CNT3,
COUNT(DISTINCT FILE_ID) CNT4
from table2 group by SOA_SECTOR,SOA_REGION,PROJECT,SOLUTION,SCAN_ID
)last_scan_issues ON last_scan_issues.SCAN_ID = a.LAST_SCAN_ID AND last_scan_issues.PROJECT =a.PROJECT
LEFT OUTER JOIN
(
select SOA_SECTOR,SOA_REGION,PROJECT,SOLUTION,SCAN_ID,
COUNT(DISTINCT ISSUE_ID) CNT3,
COUNT(DISTINCT FILE_ID) CNT4
from table2 group by SOA_SECTOR,SOA_REGION,PROJECT,SOLUTION,SCAN_ID
) prior_scan_issues ON PRIOR_scan_issues.SCAN_ID = a.PRIOR_SCAN_ID AND prior_scan_issues.PROJECT =a.PROJECT
LEFT OUTER JOIN
(
select project,solution, count(distinct FIRST_SCAN_ID) CNT7,
count(distinct LAST_SCAN_ID) CNT8,count(distinct PRIOR_SCAN_ID) CNT9
from table1 group by project,solution order by project
)file_scans ON file_scans.PROJECT=a.PROJECT
JOIN
(
SELECT PROJECT,SOLUTION,SOA_SECTOR,SOA_REGION,
COUNT(DISTINCT PATH) COUNT
FROM table3
GROUP BY PROJECT,SOLUTION,SOA_SECTOR,SOA_REGION
) project_files_count
ON project_files_count.PROJECT = a.PROJECT;
END;
) project_files_count
ON project_files_count.PROJECT = a.PROJECT;
END;
table 4
SOA_SECTOR VARCHAR2(100 CHAR)
SOA_REGION VARCHAR2(100 CHAR)
PROJECT NOT NULL VARCHAR2(256 CHAR)
SOLUTION VARCHAR2(256 CHAR)
FIRST_SCAN_ISSUE_CNT NOT NULL NUMBER(10)
FIRST_FILES_WITH_ISSUES_CNT NOT NULL NUMBER(10)
FIRST_SCAN_FILE_CNT NOT NULL NUMBER(10)
TOTAL_FILES_FOR_PROJECT_CNT NOT NULL NUMBER(10)
LAST_SCAN_ISSUE_CNT NOT NULL NUMBER(10)
LAST_FILES_WITH_ISSUES_CNT NOT NULL NUMBER(10)
LAST_SCAN_FILE_CNT NOT NULL NUMBER(10)
PRIOR_SCAN_ISSUE_CNT NOT NULL NUMBER(10)
PRIOR_FILE_WITH_ISSUES_CNT NOT NULL NUMBER(10)
PRIOR_SCAN_FILE_CNT NOT NULL NUMBER(10)
LOAD_DATE_TIME NOT NULL DATE