2013-03-05 3 views
0
Table_A 

A_id   
1  



Tale_B 
B_id  A_id 
1   1 
2   1 
3   1 

Table_C 

B_id  Process_date 
1 20130101 12:20:01 
2 20130101 12:10:01 
3 20130101 13:00:01 

Как извлечь максимальную process_date из Table_C с обращениями TABLE_A a_id на основе времени Table_C window.If я хочу, чтобы получить Table_C идентификатор и макс (process_date) в окно 20130101 12:09 ГРМ: 00 в 12:21:00, то он должен вернуть идентификатор как 1 и process_date в 12:20:01Oracle, чтобы получить максимальную запись

+1

Вы должны попробовать что-то и вернуться, чтобы спросить, почему вы не получаете ожидаемого результата. [FAQ] (http://stackoverflow.com/faq) поможет вам правильно разместить свой вопрос. Удачи! –

ответ

1

Вы можете использовать подзапрос, который получает max(process_date):

select c1.b_id, 
    c2.MaxDate 
from table_a a 
inner join table_b b 
    on a.a_id = b.a_id 
inner join table_c c1 
    on b.b_id = c1.b_id 
inner join 
(
    select max(process_date) MaxDate 
    from table_c 
) c2 
    on c1.process_date = c2.maxdate; 

См SQL Fiddle with Demo

Или вы можете использовать row_number():

select b_id, process_date 
from 
(
    select c1.b_id, 
    c1.process_date, 
    row_number() over(partition by a.a_id order by c1.process_date desc) rn 
    from table_a a 
    inner join table_b b 
    on a.a_id = b.a_id 
    inner join table_c c1 
    on b.b_id = c1.b_id 
) 
where rn = 1 

См SQL Fiddle with Demo

+0

: Спасибо, он дает дубликат, когда я получаю b_id, process_date – user2127414

+0

@ user2127414 вы можете расширить свои данные образца? А затем показать желаемый результат? – Taryn

+0

Я хочу 3,13: 00: 01 из Table_c – user2127414

0

Этот запрос вы должны получить максимальную process_date для каждого B_id со ссылкой на Table_A:

SELECT c.B_id, MAX(Process_date) 
FROM Table_C c 
INNER JOIN Table_B b 
    ON b.B_id = c.B_id 
INNER JOIN Table_A a 
    ON a.A_ID = b.A_id 
GROUP BY c.B_id 

Просто удалите c.B_id от выберите и GROUP BY, если вы хотите максимальный process_date всех B_id со ссылкой на Table_A.

SQL Fiddle