Представьте торговый стол и таблицу cds_coupon, соединенную с торговым идентификатором; таблица купона с датой расчета и расчетной суммой. Требуемый запрос заключается в том, чтобы получить сумму и дату следующего купона.Как ссылаться и повторно использовать сопроводительный запрос?
select t.tradeId AS tradeId,
(
select settlement_date from cds_coupon e
where t.tradeId=e.tradeId
and e.settlement_date = (select min(settlement_date) from cds_coupon ei where ei.tradeId = t.tradeId and ei.settlement_date > sysdate)
) AS settlement_date,
(
select settlement_amount from cds_coupon e
where t.tradeId=e.tradeId
and e.settlement_date = (select min(settlement_date) from cds_coupon ei where ei.tradeId = t.tradeId and ei.settlement_date > sysdate)
) AS settlement_amount,
FROM Trade t
Как можно видеть два уровня одинакового corelation делается дважды только, чтобы захватить другое поле - один раз, чтобы захватить дату расчетов и один раз, чтобы захватить суммы урегулирования. Отсюда вопрос - как ссылаться и повторно использовать сопроводительный запрос?
Не можете ли вы преобразовать его в соединение с подзапросом? – Barmar
В вашем запросе нет ничего, что требует присоединения к 'Trade'; Я предполагаю, что это упрощение фактического запроса. – Barmar
Если вам нужны данные расчета для всех будущих купонов, следует использовать выражение 'AND' 'больше или равно' вместо 'равно', например. 'e.settlement_date> = (выберите min (sett_date)'? –