Я боролся с этим большую часть дня сейчас.Я относительно рано в своей жизни Oracle SQL, но мне нужно вернуть результаты, где ldl_act_type.act_type_sc
равно 'LID DATE LOGGED'
, и вытащить ldl_act.date_actioned
для этого.
Однако мне также нужноэто обнулить эти значения, если act_type_sc
не найден (по существу, все еще возвращает строку, потому что нам нужно увидеть, где действие еще не было предпринято).Я возился с UNION
и UNION ALL
, но не думаю, что достаточно уяснил это.Надеюсь, приведенный ниже код имеет смысл?
select
incident.incident_ref,
incident.short_desc "Summary",
serv_dept.serv_dept_n "Assigned SVD",
inc_data.event_type,
incident.date_logged "Date Logged",
ldl_act.date_actioned "LID Date Logged",
prp_act.date_actioned "Proposed LID Date",
prp_act.remarks "Proposed LID Comments"
from
incident
inner join serv_dept on incident.ass_svd_id = serv_dept.serv_dept_id
inner join inc_data on incident.incident_id = inc_data.incident_id
left join act_reg ldl_act on incident.incident_id = ldl_act.incident_id
left join act_reg prp_act on incident.incident_id = prp_act.incident_id
left join act_type ldl_act_type on ldl_act.act_type_id =
ldl_act_type.act_type_id
left join act_type prp_act_type on prp_act.act_type_id =
prp_act_type.act_type_id
where
(inc_data.event_type = 'p')
and (incident.date_logged > (sysdate-30))
and (prp_act_type.act_type_sc = 'PROPOSED LID DATE')
and (ldl_act_type.act_type_sc = 'LID DATE LOGGED')