я иметь следующую структуру таблицы:Поиск MAX Колонка в Oracle SQL
Table A (A1, ...) where A1 is PK
Table B (B1, B2, ...) where A.A1 = B.B1 and B2 is PK
Table C (C1, C2, C3, ...) where C.C1 = B.B2 and C1 is PK
Учитывая A.A1 и C.C2 предусмотрены, мне нужно, чтобы получить MAX() С3. Следующие, по-видимому, не работают:
select c.c3
from A a join B b on a.A1 = b.B1
join C c on b.B2 = c.C1
where a.A1 = '123'
and c.C2 = to_date('01-01-2000', 'mm-dd-yyyy')
and c.C3 = (
select max(c3)
from C
where c1 = c.C1)
И запрос ничего не возвращает. Однако, когда я пытаюсь:
select max(c.c3)
from A a join B b on a.A1 = b.B1
join C c on b.B2 = c.C1
group by a.A1, c.C2
having a.A1 = '123'
and c.C2 = to_date('01-01-2000', 'mm-dd-yyyy')
Кажется, что оно возвращает правильное значение, однако оно медленное. Есть ли способ заставить его работать с первым запросом (без разбиения на разделы)?
Спасибо. Я добавил к вашему ответу решение с одним запросом. Мне просто интересно, почему первый запрос, который я написал, не работает. – Ulvon