Как объединить только последние значения даты из другой таблицы и предотвратить дублирование - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь найти уникальное значение из таблицы b и поместить его в таблицу a.В таблице b хранится несколько значений, которые меняются по дате.Я хотел бы присоединиться, но только получить значения с самой последней датой из таблицы b.

Таблица a

Unique ID 
1
2

Таблица b

Date           Unique ID  Price
01/01/2019     1          100
01/02/2019     1          101
01/03/2019     1          102
01/01/2019     2          90
01/02/2019     2          91
01/03/2019     2          92

Ожидаемый результат

Unique ID      Price      Date
1              102        01/03/2019
2              92         01/03/2019

Ценю вашу помощь!

Ответы [ 3 ]

0 голосов
/ 23 января 2019

А коррелированный подзапрос?

select b.*
from b
where b.date = (select max(b2.date) from b b2 where b2.unique_id = b.unique_id);
0 голосов
/ 23 января 2019

Имейте подзапрос, который возвращает каждый UniqueID вместе с его максимальной датой. IN этот результат.

select * from tablename
where (UniqueID, date) in (select UniqueID, max(date)
                           from tablename
                           group by UniqueID)
0 голосов
/ 23 января 2019

Вы хотите коррелированный подзапрос:

select b.*
from tableb b
where b.date = (select max(b1.date) from tableb b1 where b1.UniqueID = b.UniqueID);

Если вы хотите использовать JOIN, вы можете сделать JOIN с подзапросом:

select a.UniqueID , b.Price, b.Date
from tablea a inner join
     tableb b
     on b.UniqueID = a.UniqueID 
where b.date = (select max(b1.date) from tableb b1 where b1.UniqueID = a.UniqueID);
...