我有两个工作报告/数据源,但想将它们合并为一个。 我不太确定哪些部分应该放在哪里,什么部分需要放在哪个括号内。
对于将这些内容合并到一个报告中的一些帮助,将不胜感激,两个报告之间的链接字段为job.job_number字段。
编辑:最后我想看到的是一份报告,其中提供了以下标题:
ALL FROM REPORT / DATASOURCE ONE
Job.Job_number 410000378
job.site_code 1372
job.job_entry_date 31/01/2019 17:45:23
job.actual_comp_date 04/06/2019
central_site.site_name HIGH STREET, NEWPORT
area.area_name NEWPORT
zone_1_area_check ZONE 1 AREA
day_logged Thu
week_on_site 5
job_type.job_type_code FLY1
job_type.job_type_name FLYTIP ZONE 1 AREA
Gang_Photos Photos Linked
Photo_Count 2
Photo Check Pass
Arrived_on_time_check Pass
KPI_PASS_FAIL Pass
KPI_PENALTY_INSTANCES 0
KPI_STATUS_CHECK Pass
JOB_KPI KPI 2 - FLY TIPPING
KPI_POINTS 25
Week_dashboard Current Week
Month_dashboard Current Month
Quarter_dashboard Current Quarter
ALL FROM DATA-SOURCE TWO:
clock_start 01/02/2019 08:00:00
target_time 01/02/2019 12:00:00
priority.priority_code GC06
第一个报告/数据源代码:
select
job.job_number,
job.job_entry_date,
job.site_code,
central_site.site_name,
area.area_name as Parish,
JOB.JOB_ENTRY_DATE as Job_logged,
priority.priority_code,
priority.priority_name,
job.target_comp_date as Target_On_Site,
job.actual_START_date as Actual_On_Site,
JOB.actual_COMP_DATE as Job_Completed_Time,
CASE
WHEN central_site.site_code in
('456','1372','1373','1426','1432','2251',
'3202','3206','4017','9978','9979','9980',
'9981','9982','9983','9984','9985','9986',
'9987','9988','9989','9990','9991','9992',
'9993','9994','9995','9996','9997','9998',
'9999')
THEN 'Zone 1 Area'
ELSE ''
END as ZONE_1_AREA_CHECK,
TO_CHAR(job.job_entry_date, 'Dy') as DAY_LOGGED,
TO_CHAR(job.actual_start_date, 'IW') as WEEK_ON_SITE,
job_type.job_type_code,
job_type.job_type_name,
-- CHECK TO SEE IF 2 PHOTOS HAVE BEEN TAKEN ON JOB
CAST(CASE WHEN document_link.entity_key IS NULL THEN 'No Photos' ELSE
'Photos Linked' END as VARCHAR (20)) as gang_photos,
(SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15)) AND
document_link.entity_type = 'JOB' AND
document_link.document_notes LIKE 'Photo added by_%' ) as Photo_count,
CASE
WHEN ROUND ((SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15)) AND
document_link.entity_type = 'JOB'),2) >=2 then 'Pass' else 'FAIL' end as
Photo_Check,
-- kpi tracker
CASE
WHEN job.actual_start_date is null AND current_date < job.target_comp_date
THEN 'Not arrived on site yet'
WHEN job.actual_start_date is null AND current_date > job.target_comp_date
THEN 'FAIL (2)'
when job.actual_start_date <= job.target_comp_date then 'Pass'
when job.actual_start_date > job.target_comp_date then 'FAIL'
ELSE 'Overdue' END as Arrived_on_time_check,
-- KPI arrive on site and 2 photos check
CASE
WHEN job.actual_start_date <= job.target_comp_date AND
ROUND ((SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15)) AND
document_link.entity_type = 'JOB'),2) >=2 then 'Pass' else 'Fail' end as
KPI_PASS_FAIL,
-- KPI Instances of penalty
CASE
-- arrived on site in time and 2+ photos = 0 penalty (pass)
WHEN job.actual_start_date <= job.target_comp_date AND
ROUND ((SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15))
AND document_link.entity_type = 'JOB'),2) >=2 then '0'
-- arrived on time but no photos attached = 1 penalty (FAIL PHOTOS)
WHEN job.actual_start_date <= job.target_comp_date AND
ROUND ((SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15))
AND document_link.entity_type = 'JOB'),2) <=1 then '1'
--arrived on site late BUT 2+ PHOTOS = manual calculation (FAIL TIME)
WHEN job.actual_start_date > job.target_comp_date AND
ROUND ((SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15))
AND document_link.entity_type = 'JOB'),2) >=2 THEN 'Manual Calculation -
Time Fail'
-- ARRIVED LATE AND NOT ENOUGH PHOTOS (FAIL TIME AND PHOTOS)
WHEN job.actual_start_date > job.target_comp_date AND
ROUND ((SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15))
AND document_link.entity_type = 'JOB'),2) <=1 THEN 'Manual Calculation -
Time and Photo Fail'
else 'Check' end as KPI_PENALTY_INSTANCES,
-- KPI STATUS CHECK
CASE
-- arrived on site in time and 2+ photos = 0 penalty (pass)
WHEN job.actual_start_date <= job.target_comp_date AND
ROUND ((SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15))
AND document_link.entity_type = 'JOB'),2) >=2 then 'PASS'
-- arrived on time but no photos attached = 1 penalty (FAIL PHOTOS)
WHEN job.actual_start_date <= job.target_comp_date AND
ROUND ((SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15))
AND document_link.entity_type = 'JOB'),2) <=1 then 'FAIL - PHOTOS'
--arrived on site late BUT 2+ PHOTOS = manual calculation (FAIL TIME)
WHEN job.actual_start_date > job.target_comp_date AND
ROUND ((SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15))
AND document_link.entity_type = 'JOB'),2) >=2 THEN 'FAIL - ARRIVED LATE'
-- ARRIVED LATE AND NOT ENOUGH PHOTOS (FAIL TIME AND PHOTOS)
WHEN job.actual_start_date > job.target_comp_date AND
ROUND ((SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15))
AND document_link.entity_type = 'JOB'),2) <=1 THEN 'FAIL - TIME AND PHOTOS'
WHEN job.actual_START_date is NULL then 'FAIL - ARRIVED TIME BLANK'
else 'Check' end as KPI_STATUS_CHECK,
-- JOB KPI ATTRIBUTE LOOK UP IN GJOB TABLE
(SELECT attribute_value.attrib_value_name FROM attribute_value WHERE
attribute_value.attrib_type_code = 'GJOB'
AND attribute_value.attrib_value_code = job_type.job_type_code) as JOB_KPI,
-- JOB KPI PENALTY POINTS LOOK UP IN GJOB TABLE
(SELECT attribute_value.attrib_value_nom FROM attribute_value WHERE
attribute_value.attrib_type_code = 'GJOB'
AND attribute_value.attrib_value_code = job_type.job_type_code) as
KPI_POINTS,
-- FIELDS FOR USE IN DASHBOARD WIDGETS
CASE
when job.actual_comp_date >= trunc(trunc(SYSDATE,'IW')-1,'IW') AND
job.actual_comp_date <=trunc(SYSDATE,'IW') then 'Previous Week'
when job.actual_comp_date >=trunc(SYSDATE,'IW') AND job.actual_comp_date <=
SYSDATE then 'Current Week'
else ''
end as Week_Dashboard,
CASE
when job.actual_comp_date >= trunc(trunc(SYSDATE,'MM')-1,'MM') AND
job.actual_comp_date <=trunc(SYSDATE,'MM') then 'Previous Month'
when job.actual_comp_date >=trunc(SYSDATE,'MM') AND job.actual_comp_date <=
SYSDATE then 'Current Month'
else ''
end as Month_Dashboard,
CASE
when job.actual_comp_date >= trunc(trunc(SYSDATE,'IW')-1,'Q') AND
job.actual_comp_date <=trunc(SYSDATE,'Q') then 'Previous Quarter'
when job.actual_comp_date >=trunc(SYSDATE,'Q') AND job.actual_comp_date <=
SYSDATE then 'Current Quarter'
else ''
end as Quarter_Dashboard
from
job
left join enquiry on job.job_number = enquiry.job_number
left join defect on job.job_number = defect.job_number
left join defect_type on defect_type.defect_type_code = defect.defect_type
inner join central_site on job.site_code = central_site.site_code
inner join area on central_site.area_code = area.area_code
left join central_enquiry on central_enquiry.enquiry_number =
enquiry.enquiry_number
left join enquiry_cust_link on central_enquiry.enquiry_number =
enquiry_cust_link.enquiry_number
left join enquiry_subject on enquiry_subject.subject_code =
central_enquiry.subject_code
left join type_of_service on type_of_service.service_code =
enquiry_subject.service_code
inner join priority on priority.priority_code = job.priority_code
inner join JOB_STATUS_LOG on JOB.JOB_NUMBER = JOB_STATUS_LOG.JOB_NUMBER
and job.job_log_number = job_status_log.job_log_number
inner join JOB_STATUS on JOB_STATUS.STATUS_CODE = JOB_STATUS_LOG.STATUS_CODE
inner join job_type on job_type.job_type_key = job.job_type_key
inner join priority on priority.priority_code = job.priority_code
LEFT OUTER JOIN
(SELECT DISTINCT
job.job_number,
document_link.entity_key,
(SELECT COUNT(document_link.entity_key) FROM document_link WHERE
document_link.entity_key =CAST( job.job_number as VARCHAR (15)) AND
document_link.entity_type = 'JOB' AND
document_link.document_notes LIKE 'Photo added by_%' ) as Photo_count
FROM
job
LEFT OUTER JOIN
document_link
ON
document_link.entity_key =CAST( job.job_number as VARCHAR (15)) AND
document_link.entity_type = 'JOB' AND
document_link.document_notes LIKE 'Photo added by_%') document_link
ON
document_link.job_number = job.job_number
where
job_status_log.allocated_officer = 'IDVE' and
job_status_log.status_code in ('5100','5200','5300','5400')
order by
job.job_number
第二份报告/数据源代码:
select job_number, priority_code, job_entry_date, clock_start,
target_comp_date,
case
when to_char(target_time, 'Dy', 'NLS_DATE_LANGUAGE=ENGLISH') = 'Fri'
and floor((target_time - trunc(target_time)) * 24) >= 17
then target_time + 2 + 63/24
when floor((target_time - trunc(target_time)) * 24) >= 17
then target_time + 15/24
else target_time
end as target_time
from (
select job_number, priority_code, job_entry_date, clock_start,
TARGET_COMP_DATE,
CASE
WHEN PRIORITY_CODE IN ('GC01','GC02','GC03','GC04','GC05','GC06','GC07')
THEN
clock_start
+ case priority_code
when 'GC01' then 1
when 'GC02' then 2
when 'GC03' then 0.5
when 'GC04' then 1
when 'GC05' then 2
when 'GC06' then 4
when 'GC07' then 24
end
/ 24
ELSE
TARGET_COMP_DATE END as target_time
from (
select job_number, priority_code, job_entry_date, target_comp_date,
case
when to_char(job_entry_date, 'Dy', 'NLS_DATE_LANGUAGE=ENGLISH') = 'Fri'
and floor((job_entry_date - trunc(job_entry_date)) * 24) >= 17
then trunc(job_entry_date) + 80/24
when to_char(job_entry_date, 'Dy', 'NLS_DATE_LANGUAGE=ENGLISH') = 'Sat'
then trunc(job_entry_date) + 56/24
when to_char(job_entry_date, 'Dy', 'NLS_DATE_LANGUAGE=ENGLISH') = 'Sun'
or floor((job_entry_date - trunc(job_entry_date)) * 24) >= 17
then trunc(job_entry_date) + 32/24
when floor((job_entry_date - trunc(job_entry_date)) * 24) < 8
then trunc(job_entry_date) + 8/24
else job_entry_date
end as clock_start
from job
)
)