Как взять МАКСИМУМ из двух разных столбцов из двух разных таблиц

#sql #oracle #oracle11g #oracle10g #oracle-sqldeveloper

Вопрос:

У меня есть таблица A, таблица B, таблица C, и я хочу взять MAX(идентификатор заказа) и сгруппировать по из B и MAX(дата) и сгруппировать по из C

Таблица А:

 SNO
AccNo
 

Таблица В:

 SNO(FK)
OrderId
 

Таблица C:

 AccNo(FK)
date
 

Я написал что-то вроде этого:

 select b.max(OrderId), other columns
from a, b, c
where a.sno = b.sno
and a.accno = c.accno
and (b.orderid, c.date) IN (select b.orderid, max(c.date)
from a, b,c 
where a.sno = b.sno
and a.accno = c.accno
group by b.orderid)
group by other columns
 

Каким-то образом это работает хорошо, но не дает желаемых результатов. Был бы признателен за некоторую помощь в этом.

Комментарии:

1. JOIN . JOIN . JOIN . Примеры данных и желаемые результаты действительно помогли бы.

Ответ №1:

Вы можете сделать:

 select a.AccNo, max(b.orderId) as maxOrderId, max(myDate) as maxDate
from tableA a
inner join tableB b on a.SNO = b.SNO
inner join tableC c on a.AccNo = c.AccNo
group by a.AccNo
 

Это то, чего ты хотел?