Я пытаюсь решить эту проблему:
У меня есть запрос / представление, которое объединит ~ 10 таблиц для извлечения некоторых полей для отчета (если таковые имеются).Запрос не использует никакой функции группировки, он только объединяет и обрезает некоторые ненужные данные.
Мне нужно одно большое представление, получить группу для первого индекса, взять максимум даты ввторой столбец и взять всю информацию из других полей, ссылаясь на запись максимального значения.
Я не могу сделать это в postgres.В качестве псевдокода я могу дать следующее:
select 1
, max(2)
, 3 referred to the record from max(2)
, 4 referred to the record from max(2)
, ...
, 20 referred to the record from max(2)
from (ViewWithAllJoins) a
group by 1
В связи с проблемами конфиденциальности и бизнеса мне пришлось запутать некоторые сведения, 1/2/3/4 ... это название столбца из представления "ViewWithAllJoins ", я надеюсь, что проблема все еще понятна и разрешима!
Я попытался с помощью команды WINDOW, как сообщается в Преобразовать keep_plus из запроса Oracle в postgres , но я не могуиспользовать группу, которая мне нужна.Другие попытки, которые я делал, были о файле diff_rank, как показано в Dense_rank, сначала Oracle в Postgresql, конвертировали , но я не могу делать никаких предположений о порядке данных в других полях, кроме 1и 2, поэтому я не могу использовать для них какую-либо статистическую функцию.
Есть идеи?Возможно, не добавляя слишком много подзапросов.
Спасибо!
РЕДАКТИРОВАТЬ:
Как предложено, я добавлю некоторые синтетические данные, чтобы лучше понять проблему и то, что я хочу.
Начало:
ID DATE COLUMN1 COLUMN2 COLUMN3
=====================================================================
88888888;"2016-04-02 09:00:00";"aaaaaaaaaaa";"TEXT89" ; 999999999
88888888;"2018-08-21 09:00:00";"a" ;"TEXT1" ; 988888888
88888888;"2017-11-09 09:00:00";"zzzz" ;"TEXT80000" ; 850580582
75858585;"2017-01-31 09:00:00";"~~~~~~~~~~~";"TEXT10" ; 101010101
75858585;"2018-04-02 09:00:00";"eeeeeeeeeee";"TEXT1000" ; 111111111
99999999;"2016-04-02 09:00:00";"8d2ecafd866";"TEXT808911"; 777777777
Что я хочу:
ID DATE COLUMN1 COLUMN2 COLUMN3
===================================================================
88888888;"2018-08-21 09:00:00";"a" ;"TEXT1" ; 988888888
75858585;"2018-04-02 09:00:00";"eeeeeeeeeee";"TEXT1000" ; 111111111
99999999;"2016-04-02 09:00:00";"8d2ecafd866";"TEXT808911"; 777777777
Таким образом, группа по идентификатору, максимуму даты и другим полям, связанным со строкоймаксимальная дата.