Как переписать подзапрос так, чтобы данные из столбца "id" подзапроса можно было использовать в качестве условия для "left join" с таблицей "cc.second_table", избегая дублирования данных в результирующей таблице?
Результат, полученный в подзапросе, можно использовать для выполнения операции join с помощью вложенных подзапросов или с помощью временных таблиц. Один из способов переписать подзапрос так, чтобы данные из столбца "id" подзапроса можно было использовать в качестве условия для "left join" с таблицей "cc.second_table" без дублирования данных, представлен ниже: ```sql SELECT * FROM cc.main_table mt LEFT JOIN ( -- подзапрос для получения уникальных id SELECT DISTINCT id FROM cc.sub_table ) sub ON mt.id = sub.id LEFT JOIN cc.second_table st ON sub.id = st.id ``` В этом примере мы используем вложенный подзапрос, чтобы получить уникальные значения из столбца "id" подзапроса, и затем выполняем "left join" с таблицей "cc.second_table" с использованием этих значений в качестве условия сопоставления. Это позволяет избежать дублирования данных в результирующей таблице.
Если я не напутал с окном partition by va.order_id, apa.sale_type_id, то скорее всего можно переписать так:
select json_build_object('id', A.id, 'status', A.status) from (select apa.id, apa.status, va.created_at, row_number() over (partition by va.order_id, apa.sale_type_id order by apa.created_at desc) Rn from vt.applications va join orders o on va.order_id = o.id join cc.additional_projects_actions apa on apa.order_id = va.order_id and apa.sale_type_id = va.sale_type_id where o.id = 64 and va.sale_type_id is not null ) A where A.Rn = 1 -- отсекаем 1 запись - аналог order by apa.created_at desc limit 1 из первоначального запроса order by A.created_at desc;
Дубли в таблице сс.second_table или cc.additional_projects_actions?