2015-03-24 5 views
0

Я в настоящее время использую компилятор DBISAM sql. Это очень похоже на компилятор ms sql, единственное различие заключается в том, что я не могу иметь никаких вложенных операторов объединения.Sql grabbing самая последняя запись

Нижеприведенный запрос представляет собой вложенный запрос, который захватывает самую последнюю кредитную историю и ставку. Мне интересно, есть ли другой способ написать это без вложенного оператора select.

select * from 
(select Loan_Id, Max(effectiveDate) as EffectiveDate from InterestTerms 
group by Loan_Id) as Y 
join InterestTerms as X on Y.Loan_Id = X.Loan_Id and Y.EffectiveDate = X.EffectiveDate 
order by Y.Loan_Id 
+0

Вы можете использовать WITH? https://msdn.microsoft.com/en-us/library/ms175972.aspx – TAMTAM

+0

Нет, я думал о чем-то вроде http://stackoverflow.com/questions/6617347/selecting-most-recent-record answer by Bohemian – Master

ответ

0

Вы можете попробовать следующее:

select 
    X.* 
FROM 
    InterestTerms AS X 
WHERE 
    X.effectiveDate IN (
    select 
      Max(Y.effectiveDate) as MaxED 
    from 
      InterestTerms as Y 
    WHERE 
      Y.Loan_Id = X.Loan_Id 
    ) 
order by 
    X.Loan_Id 

(ОБНОВЛЕНО)

+0

Извините - я не заметил отсутствие поддержки «TOP» в DBISAM - пожалуйста, найдите мой обновленный ответ. –

+0

Нет проблем, я не могу ломать разрыв с DBISAM ... Ошибка DBISAM Engine # 11949 Ошибка синтаксического анализа SQL - ожидаемое имя столбца, но вместо этого найдено Y.Loan_Id в инструкции SELECT SQL 'Спасибо за помощь, хотя, очень оценили – Master

+0

Нет проблема. Надеюсь, вы найдете решение. Если бы я знал что-нибудь еще, я напишу. С уважением. –

Смежные вопросы