Я пытаюсь выполнить запрос, который возвращает разные AddressID.
Строка, которая должна быть перенастроена для каждого AddressID, должна соответствовать строке с самой последней ReadDate.
Я также хочу вернуть значение из (неагрегированных) столбцов PhoneNumber, SomeCode и Country для заданных записей.
Здесь есть похожие вопросы к моим, но, кажется, ничто не подходит для моей конкретной ситуации. Я пробовал разные подзапросы и собирал другие столбцы, но, похоже, не могу получить желаемых результатов.
Скажите базу запроса как:
select cr.AddressID, cr.ReadDate, in.PhoneNumber, in.SomeCode, in.Country
from CustomerReadings cr, in.CustomerInfo
where cr.AddressID = in.AddressID
Например, если у меня есть таблица, которая выглядит следующим образом:
AddressID ReadDate PhoneNumber SomeCode Country
1005 01/01/1997 5556565 GHS Canada
1005 05/06/2006 5556753 ROT USA
1005 08/12/2018 5552345 JKR USA
2007 02/05/2012 5558746 MSC Canada
2007 12/07/2018 5552345 RRE France
4000 03/01/1999 5552345 RRE France
4000 09/05/2007 5551243 MSR USA
Я хочу, чтобы результаты запроса выглядели так:
AddressID ReadDate PhoneNumber SomeCode Country
1005 08/12/2018 5552345 JKR USA
2007 12/07/2018 5552345 RRE France
4000 09/05/2007 5551243 MSR USA
Если что-то неясно, пожалуйста, дайте мне знать, и я соответствующим образом обновлю свой вопрос.
В случае 1 таблицы, как вы использовали в своем примере ответа, код работает.
Но когда я ввожу другую таблицу, я больше не получаю только один отдельный AddressID, например:
select (or select distinct)
cr.AddressID, cr.ReadDate, in.PhoneNumber, in.SomeCode, in.Country
from
CustomerReadings cr,
CustomerInfo in
where
cr.AddressID = in.AddressID
and cr.ReadDate =
(select max(cr2.ReadDate)
from CustomerReadings cr2
where cr2.AddressID = cr.AddressID)
order by
2 desc,
1;