Выберите максимальную дату из объединенных таблиц со столбцами с уникальными значениями - PullRequest
0 голосов
/ 06 мая 2018

Я хочу получить самую последнюю дату из объединенных таблиц с уникальными значениями в 2 столбцах. Как мне это сделать? Я также пробовал ранжирование (но у Джона тот же ранг) и пробовал rownum = 1, но по некоторым причинам я все еще получаю ниже тот же результат

Name    ID    Email         DeptNo DeptScore   OnDate
John   A46 john@doe.com       100    50         5/11/2011
John   A46 johndoe@aol.com    200    75         7/21/2015
Alice  B33 alice@hotmail.com  100    50         4/15/2014

Я хочу получить следующее:

Name    ID    Email         DeptNo DeptScore   OnDate
John  A46  johndoe@aol.com    200    75        7/21/2015
Alice B33  alice@hotmail.com  100    50        4/15/2014

Мой запрос

select distinct e.name, e.id, e.email, d.deptno, d.deptscore, d.ondate
from
  emp e
inner join dept d on
      d.deptno = e.dnum 
  and d.ondate = e.livedate
  and d.ondate = (select max(m.ondate)
                  from dept m
                  where d.ondate = m.ondate)
--where e.id in ('A46','B33')

1 Ответ

0 голосов
/ 06 мая 2018

Попробуйте использовать приведенный ниже запрос, он решит вашу проблему.

select  name,
        id,
        email,
        deptno,
        deptscore,
        ondate
from  (select   e.name,
                e.id,
                e.email,
                d.deptno, 
                d.deptscore, 
                d.ondate,
                rank() over(partition by e.id,e.name order by d.ondate desc) rn
        from emp e join
             dept d
             on d.deptno = e.dnum and d.ondate = e.livedate
      ) s
where rn = 1;

Выход:

NAME    ID  EMAIL                DEPTNO DEPTSCORE   ONDATE
John    A46 johndoe@aol.com      200    75          21-JUL-15
Alice   B33 alice@hotmail.com    100    50          15-APR-14
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...