Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Помогите с запросом....


Автор: chiffa 18.1.2016, 17:13
Всем добрый день. Есть запрос:

Код

select q.ACCOUNTNO, b.OPDATE, b.REMAINSTART from tempacc q

LEFT JOIN  TACCOUNTDAILYHISTORYARC b on b.OPDATE between '01.01.2015' and '31.01.2015' and b.ACCOUNTNO = q.ACCOUNTNO 

where q.ACCOUNTNO in ('12345', '67890')

order by b.OPDATE asc


который возвращает следующий результат:


12345    06.01.15    10.52
67890    08.01.15    25.36
12345    09.01.15    11.58
67890    09.01.15    8.32
12345    10.01.15    18.58

мне нужно к этому запросу добавить выборку только первой записи (по OPDATE) по каждому ACCOUNTNO. то есть финальные результат должен выглядить так:

12345    06.01.15    10.52
67890    08.01.15    25.36

Заранее спасибо за помощь!

Автор: Zloxa 18.1.2016, 17:57
Код

select s.ACCOUNTNO, s.OPDATE, s.REMAINSTART from (
select q.ACCOUNTNO, b.OPDATE, b.REMAINSTART, row_number() over (partition by q.ACCOUNTNO order by b.OPDATE asc) rn from tempacc q
LEFT JOIN  TACCOUNTDAILYHISTORYARC b on b.OPDATE between '01.01.2015' and '31.01.2015' and b.ACCOUNTNO = q.ACCOUNTNO 
where q.ACCOUNTNO in ('12345', '67890')
) s where s. rn = 1
order by s.OPDATE asc


Добавлено через 2 минуты и 27 секунд
Цитата(chiffa @  18.1.2016,  18:13 Найти цитируемый пост)
 b.OPDATE between '01.01.2015' and '31.01.2015'

rtfm http://docs.oracle.com/database/121/SQLRF/sql_elements003.htm#SQLRF51062

Автор: chiffa 18.1.2016, 18:07
Спасибо!!!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)