У меня следующая проблема.В настоящее время я пытаюсь вернуть информацию из ряда различных таблиц в нашей базе данных.Процесс заключается в том, что в систему добавляется действие, которое теоретически должно сопровождаться соглашением определенного типа.Однако иногда за деятельностью не следует ожидаемое соглашение, и я хотел бы определить, где это происходит.
В настоящее время у меня есть запрос (показан ниже), который возвращает данные, которые выглядят так (упрощенно изфактический запрос):
ID Activity Agreement Agreement Type
1 X Budgets Payment
2 X
3 X Budgets
Как должны выглядеть данные следующим образом:
ID Activity Agreement Agreement Type
1 X Budgets Payment
2 X
3 X
В основном, если нет соглашения о типе платежа, я не хочу, чтобы соглашениепоказать (но я все еще хочу увидеть деятельность).Идентификатор используется для присоединения действия к соглашениям, но соглашения и тип соглашения взяты из отдельных таблиц, соединенных по идентификатору описания.
SELECT O_ACTIVITIES.ACT_SUBJECT_ID as "ID",
initcap(olm_bo.get_per_name(O_ACTIVITIES.ACT_SUBJECT_ID)) as "Name",
O_ACTIVITIES.ACT_ID as "Activity ID",
initcap(O_ACTIVITY_TYPES.ACT_DESC) as "Activity Type",
O_ACTIVITIES.ACT_REQUESTED_DATE as "Start Date",
case when olm_bo.get_ref_desc(O_ACTIVITIES.ACT_STATUS,'ACTIVITY_STATUS') = 'Newly generated'
then null
else O_ACTIVITIES.ACT_STATUS_DATE
end as "End Date",
olm_bo.get_ref_desc(O_ACTIVITIES.ACT_STATUS,'ACTIVITY_STATUS') as "Status",
O_ACTIVITIES.ACT_CREATED_BY as "Created by",
O_AGREEMENT_DETAILS.ADE_ID as "Agreement ID",
initcap(olm_bo.get_sty_name(O_AGREEMENT_DETAILS.ADE_STY_ID)) as "Service Type",
initcap(olm_bo.get_sty_name(O_SERVICE_ELEMENTS.SEL_STY_CHILD_ID)) as "Service Element",
O_AGREEMENT_DETAILS.ADE_START_DATE as "Agreement Start",
O_AGREEMENT_DETAILS.ADE_END_DATE as "Agreement End",
O_AGREEMENT_DETAILS.ADE_ENTERED_BY as "Entered by"
FROM O_ACTIVITIES
LEFT JOIN O_ACTIVITY_TYPES
ON O_ACTIVITY_TYPES.ACT_CLASS= O_ACTIVITIES.ACT_CLASS and
O_ACTIVITY_TYPES.ACT_TYPE=O_ACTIVITIES.ACT_TYPE AND
initcap(O_ACTIVITY_TYPES.ACT_DESC) = 'X'
LEFT OUTER JOIN O_AGREEMENT_DETAILS
ON O_AGREEMENT_DETAILS.ADE_SUBJECT_ID=O_ACTIVITIES.ACT_SUBJECT_ID AND
initcap(olm_bo.get_sty_name(O_AGREEMENT_DETAILS.ADE_STY_ID)) IN ('Budgets') AND
O_AGREEMENT_DETAILS.ADE_START_DATE >= O_ACTIVITIES.ACT_REQUESTED_DATE
LEFT JOIN O_SERVICE_ELEMENTS
ON O_AGREEMENT_DETAILS.ADE_SEL_ID=O_SERVICE_ELEMENTS.SEL_ID AND
initcap(olm_bo.get_sty_name(O_SERVICE_ELEMENTS.SEL_STY_CHILD_ID)) IN ('Payment')
WHERE (O_ACTIVITIES.ACT_SYSTEM_IND IS NULL and
NVL(O_ACTIVITIES.ACT_REC_TYPE,'???') NOT IN ('Y') ) AND
initcap(O_ACTIVITY_TYPES.ACT_DESC) = 'X'
Проблема заключается в том, что таблица элемента службы, которая содержит описание типа соглашения, отделена оттаблица соглашений.Я мог бы использовать код типа соглашения (который фактически соединяет тип соглашения с таблицей соглашений), однако, на самом деле я просто хочу знать, смогу ли я достичь внутреннего соединения между таблицей соглашений и таблицей типов соглашений, которое не влияет натаблица активности.
Любые указатели и советы приветствуются, надеюсь, я объяснил себя достаточно.