Как я могу присоединиться к двум операторам SELECT? - PullRequest
2 голосов
/ 28 января 2012
select * 
From
(
    select * 
    from order 
    order by creationtime desc
) 
where rownum=1 and creationtime='12-feb-2010';

и

select * 
from
(
    select * 
    from 
    order by rate desc
) 
where rownum<=2 and creationtim='12-dec-2011';

Я хочу объединить эти два SELECT запроса, используя JOIN.Оба SELECT запрашивают запрос из одной таблицы.Я не хочу использовать UNION.

Как мне этого добиться?

Ответы [ 2 ]

8 голосов
/ 28 января 2012

Трудно сказать по вашему вопросу, что все должно быть в предложении "ON" ниже, так как вы не указали первичный ключ, но это должно дать вам представление о том, что вам нужно делать.

select * From
(select * from order order by creationtime desc) A 
INNER JOIN (select * from order by rate desc) B
ON A.rownum = B.rownum
where A.rownum=1 and A.creationtime='12-feb-2010' 
AND B.rownum<=2 and B.creationtim='12-dec-2011'
1 голос
/ 29 января 2012

Используйте аналитическую функцию row_number (), чтобы получить первую строку для каждого значения.

select [list of columns]
  from (select o.*, row_number() over (partition by creationtime)
          from order o
         where creatontime in ('12-DEC-2011', '12-FEB-2010')
       )
 where rn = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...