Я использую ORACLE 12C.
Существует два компонента - Соглашение и Дело.
Хранение информации, связанной с соглашением, в Agreement_line и Таблице объектов. Общими столбцами между этими таблицами являются Trans_id и agr_line_no.
Аналогичным образом, информация, связанная с делом, хранится в таблицах Cla_case и Cla_event. Общий столбец между этими таблицами - Cla_event_no.
Я хочу получить подробную информацию о случае, случайная дата которого находится между Cover_start_date и Cover_end_date таблицы Agreement_line. Incident_date - это столбец таблицы Cla_event
Я получаю желаемый результат из запроса ниже:
select
cc.cla_case_no
,al.poly_no
,al.agr_line_no
,al.agr_line_seq_no
,al.product_line_id
,al.trans_id
,al.cover_start_date
,ce.incident_date
,al.cover_end_date
,o.n15
,cc.name_id_no
,o.object_no
,o.seq_no
,CASE
WHEN o.n15 = cc.name_id_no THEN ' '
ELSE 'Joint Ins'
END AS NAME_ID_CHECK
from
cla_case cc
,cla_event ce
,agreement_line al
,object o
where
cc.cla_case_no = 9353152
and
ce.cla_event_no = cc.cla_event_no
and
AL.COVER_START_DATE <= CE.INCIDENT_DATE
and
al.cover_end_date >= ce.incident_date
and
al.poly_no = 410385376
and
al.product_line_id = 'BHEDS'
and
al.agr_line_no = o.agr_line_no
and
al.trans_id = o.trans_id
Но теперь мне также нужно извлечь последнюю запись предоставленного poly_no, когда инцидент_date не падает междуcover_start_date и cover_end_date
Я пробовал запрос ниже:
SELECT cc.cla_case_no,
al.poly_no,
al.agr_line_no,
al.agr_line_seq_no,
al.product_line_id,
al.trans_id,
al.cover_start_date,
ce.incident_date,
al.cover_end_date,
o.n15,
cc.name_id_no,
o.object_no,
o.seq_no,
CASE WHEN o.n15 = cc.name_id_no THEN ' ' ELSE
'Secondary insured' END
AS NAME_ID_CHECK,
' ' "INCIDENT_DATE_CHECK"
FROM cla_case cc,
cla_event ce,
agreement_line al,
object o
WHERE cc.cla_case_no = 9353152
AND ce.cla_event_no = cc.cla_event_no
AND AL.COVER_START_DATE <= CE.INCIDENT_DATE
AND al.cover_end_date >= ce.incident_date
AND al.poly_no = 410385376
AND al.product_line_id = 'BHEDS'
AND al.agr_line_no = o.agr_line_no
AND al.trans_id = o.trans_id
UNION
SELECT cc.cla_case_no,
al2.poly_no,
al2.agr_line_no,
al2.agr_line_seq_no,
al2.product_line_id,
al2.trans_id,
al2.cover_start_date,
ce.incident_date,
al2.cover_end_date,
o2.n15,
cc.name_id_no,
o2.object_no,
o2.seq_no,
CASE WHEN o.n15 = cc.name_id_no THEN ' ' ELSE
'Secondary insured' END
AS NAME_ID_CHECK,
'Incident date not falling between cover start date and
cover end date '
"INCIDENT_DATE_CHECK"
FROM agreement line al2, object o2
where al2.poly_no not exists (
SELECT al.poly_no
FROM cla_case cc, cla_event ce, agreement_line al
where cc.cla_case_no = 9353152
and ce.cla_event_no = cc.cla_event_no
and AL.COVER_START_DATE <= CE.INCIDENT_DATE
and al.cover_end_date >= ce.incident_date
and al.poly_no = 410385376
and al.product_line_id = 'BHEDS' )
and al2.poly_no = 410385376
and al2.product_line_id = 'BHEDS'
and al2.newest = 'Y'
and al2.agr_line_no = o2.agr_line_no
and al2.trans_id = o2.trans_id
Я получаю сообщение об ошибке "Команда не завершена должным образом". Может ли кто-нибудь указать, что я делаю неправильно, и есть ли другой альтернативный способ вместо использования UNION?