Я пытаюсь вывести строки, которые удовлетворяют следующим условиям:
- Как минимум одна строка для ClientID должна быть в текущем месяце (интересует только самая последняя строка для Client ID вв этом месяце)
- Класс в текущем месяце для ClientID отличается от непосредственно предыдущей строки из предыдущего месяца для ClientID
Мои данные могут иметь несколько строк на клиента в месяци меня интересует только последняя строка в месяц для каждого клиента.
Вот пример моих данных:
ID Client ID Class Date
14609 87415 C 04/DEC/18
13859 87415 X 16/AUG/18
11906 87415 C 27/FEB/17
10667 87415 B 23/JAN/17
14538 132595 D 03/DEC/18
14567 141805 C 04/DEC/18
14411 141805 A 27/NOV/18
Желаемый результат, основанный на вышесказанном:
ID Client ID Class Date
14609 87415 C 04/DEC/18
13859 87415 X 16/AUG/18
14567 141805 C 04/DEC/18
14411 141805 A 27/NOV/18
У меня было несколько попыток с нулевым успехом.Любая помощь будет принята с благодарностью.Мои попытки не смогли найти сразу предыдущий ряд.: /
select * from
(
select drh.defaultriskhistid, drh.clientid, cv.description,
drh.updatetimestamp
from default_risk_history drh
inner join code_values cv on drh.defaultriskcodeid = cv.codevalueid
where
defaultriskhistid in
(select max(defaultriskhistid) from default_risk_history
group by clientid, ltrim(TO_CHAR(updatetimestamp,'mm-yyyy'),'0'))
) t
where
(
Select count(*) from default_risk_history drh1 where drh1.clientid =
t.clientid and ltrim(TO_CHAR(drh1.updatetimestamp,'mm-yyyy'),'0') =
ltrim(TO_CHAR(current_date,'mm-yyyy'),'0')
) >=1
order by clientid, updatetimestamp desc