как получить в результирующей выборке только результаты 'true'
with res_decision
as (
select count(app.id) amount, app.id
from final_decision fd
join APP_PRE_APROV_LOAN app on app.id = fd.APP_UL_ID
and app.status = 1
where fd.status = 1
group by app.id
),
res_status
as (
select count(app.id) as amount, app.id
from APP_PRE_APROV_LOAN app
join status_history sh on app.id = sh.aplication_id
join LOGS_STATUS_DICT lsd on lsd.id = sh.APP_STATUS
where sh.status=1
and lsd.name = 'Сформировано заключение АСПР'
group by app.id
)
select case
when
(select amount from res_decision where id = app.id)
!=
(select amount from res_status where id = app.id)
then (select 'true' as result)
else 'false'
end as r,
app.id
from APP_PRE_APROV_LOAN app
where
;
Ответы (2 шт):
Автор решения: teran
→ Ссылка
у вас есть три связанных таблицы, вы, видимо хотите получить такие записи из основной, для которых значения amount в дополнительных различны. Для этих целей надо к основной таблице присоединить обе другие и отфильтровать по их значениям. Примерно так:
SELECT app.id, d.status, r.status
FROM app
LEFT JOIN res_desicion AS d ON (d.app_id = app.id)
LEFT JOIN res_status AS s ON (s.app_id = app.id )
WHERE d.status <> r.status
Автор решения: Konst
→ Ссылка
with
...
select 'true' as result,
app.id
from APP_PRE_APROV_LOAN app INNER JOIN res_decision d ON app.id = d.id
INNER JOIN res_status s ON app.id = s.id
WHERE
d.amount != s.amount